JAVA 某段 字符串首尾 正则匹配

判断 如String str = "fdsfs${dfsfd}fds";
字符串中出现${xxx}都可以
这个字符串中允许出现多个${xxx}

第1个回答  2012-03-05
String str = "fdsfs${dfsfd}fds${aa}\\${aa.ss}";
Pattern pat=Pattern.compile("(?<!\\\\)\\$\\{[^\\}]+\\}");//考虑 反斜线转义$
//Pattern pat=Pattern.compile("\\$\\{[^\\}]+\\}");//不管是否转义$
Matcher mcr=pat.matcher(str);
while(mcr.find()){
System.out.println(mcr.group());
}追问

套了两层就无法检测了${11111${2222222222}11111111}

追答

实际中有套了两层么? 你想获得什么? 里面的 外面的?
有N层的么?

追问

只要检测有没有就行了,匹配的话是最里面的那个

追答

String str = "111${11111${222${abc}2222222}11111111}11${cdd}";
Pattern pat=Pattern.compile("\\$\\{(?:(?!\\$\\{)[^\\}])+\\}");
Matcher mcr=pat.matcher(str);
while(mcr.find()){
System.out.println(mcr.group());
}

第2个回答  2012-03-05
^\w*\$\{\w+\}\w*$追问

这个要怎么用?Pattern p = Pattern.compile("^\w*\$\{\w+\}\w*$");
String a = "A${fdsf}fdsfdsfdsfd";
Matcher m = p.matcher(a);//
System.out.println(m.matches());??

追答

需要转义
请将\替换成\\即可

追问

套了两层就无法检测了${11111${2222222222}11111111}

追答

那这种情况,你要匹配出那个结果?

追问

只要检测有没有就行了,匹配的话是最里面的那个

追答

\$\{[^\{\}]+\}

本回答被提问者采纳

求一个匹配 以指定字符开头,指定字符结尾,中间内容任意的正则表达式
^String regex = "^baiA*C*B$"; Pattern p = Pattern.compile(regex); java.util.regex.Matcher m = p.matcher("这里是要匹配的字符串shu"); while (m.find()) { System.out.println(m.group()); }

JAVA正则表达式获取特定的字符串
"^[a-zA-Z]": 匹配以大小写字母开头的字符串 "[0-9]%": 匹配含有 形如 x% 的字符串 ",[a-zA-Z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串 你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 "%[^a-zA-Z]%" 匹配含有两个百分号里面有一个...

正则表达式怎么匹配字符串中最后一串数字?
1、创建java类,TestRegexp 2、编写java代码, String regex = "[0-9]+(?=[^0-9]*$)"; Pattern p = Pattern.compile(regex); java.util.regex.Matcher m = p.matcher("1a2b3c4d56789abcde"); 3、选择Run AS -- Java application, 4、执行java代码,产生结果,匹配到字符串中最后一串数字, 已...

正则匹配开头为'{'结尾为'},'应该怎么写?
1、新建java类;2、编写java代码,匹配开头为'{'结尾为'},'的表达式;3、编写测试字符串1'{abc}' 及2'{abc' ;while (m2.find()) { System.out.println(m2);} 4、查看输出内容,可以看到字符串1'{abc}' 满足要求,而字符串2'{abc' 不满足要求;...

求一个匹配 以指定字符开头,指定字符结尾,中间内容任意的正则表达式
\\b开头字符.*?结尾字符\\b 将上面正则表达式中 开头字符,结尾字符替换为实际应该在开头和结尾的字符 如果开头和结尾字符是在正则中具有特殊含义的字符,则还需要转义

Java中正则表达式(regex)匹配多行(Pattern.MULTILINE和Pattern.DOTALL模 ...
Pattern.MULTILINE模式使得^和$在处理多行文本时不再仅限于首尾行,而是匹配每一行的开始和结束。这在如下的例子中体现,当模式被设置为Pattern.MULTILINE,正则会匹配所有行。而Pattern.DOTALL模式则扩大了.字符的匹配范围,不仅限于字符本身,还会匹配行终止符,如换行符。这样,使用Pattern.DOTALL模式时...

java正则表达式处理一段字符串得到指定字符后面的字符,
var b=""{hello:{"名字":"李四"}}""var reg=new RegExp("李四","gi");var a=ret.exec(b);

正则表达式匹配以某个字符串开头的后面部分的字符串
\/\/匹配start、end,后面引号内的内容(?<="start"\\:"|"end"\\:")[^"]+

java 正则 匹配 带有\\R\\N字符的 字符串问题
. 这个符号默认是不匹配换行符的,必须设置。如:Pattern patt = Pattern.compile("()(.*)()",Pattern.DOTALL);这样 . 就可以匹配换行符了。同时建议楼主将 (.*) 替换为 ([\\\\s\\\\S]*),这样就不需要设置句点符号的格式而能匹配任何字符。请采纳 ...

JAVA正则表达式
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){return this.replace([^\\x00-\\xff]\/g,"aa").length;} 匹配空行的正则表达式:\\n[\\s| ]*\\r 匹配HTML标记的正则表达式:\/<(.*)>.*<\\\/\\1>|<(.*) \\\/>\/ 匹配首尾空格的正则表达式:(^\\...

相似回答