正则表达式写法?

来源:互联网 发布:如何避免网络陷阱 编辑:程序博客网 时间:2024/06/01 19:08

问题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]

扩展:

匹配多个非逗号字符串 [^,]+

abc,def,ghi

结果 abc def ghi

0 0
原创粉丝点击