您的位置:首页 > 其它

正则表达式写法?

2016-04-05 19:46 204 查看
问题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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: