问题1:
最近碰到一个问题,就是如何根据两端的字符来匹配相应的字符串,正则表达式如何写?
答案是用(.*?)
分析:
例如,\\[(.*?)\\]这个正则表达式匹配两端是[]符号的字符串
其中一点代表任意字符,星号代表字符串长度,?表示限制贪婪匹配
以下是有?的情况下,即当第一次匹配到 ] 停止,开始查找 [,进行第二次匹配查找。
String regEx = "\\[(.*?)\\]"; String str = "abc[123]def[ghi]456"; Pattern pattern = Pattern.compile(regEx); Matcher matcher = pattern.matcher(str); System.out.println(matcher.matches()); while( matcher.find() ) { System.out.println( "" + matcher.group() ); }
结果:[123]
[ghi]
String regEx = "\\[(.*)\\]"; String str = "abc[123]def[ghi]456"; Pattern pattern = Pattern.compile(regEx); Matcher matcher = pattern.matcher(str); System.out.println(matcher.matches()); while( matcher.find() ) { System.out.println( "" + matcher.group() ); }
结果:[123]def[ghi]