正则表达式写法?

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 04:41   113   0

问题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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP