带有捕获组的正则表达式不在Java中工作
我有一些字符串的模式如下:
- PSHELF-2[PSHELF-MF-6RU]
- 货架-5[货架M6]
- 货架-6[货架M15]
- 货架-6[货架M15]
我想突出显示信息
为此,我使用以下正则表达式:
(.*SHELF)-(.*)\[.*SHELF-(.*)\]
我用regex101测试了它
如果我尝试在Java上实现相同的登录
Pattern pattern = Pattern.compile("(.*SHELF)-(.*)\\[.*SHELF-(.*)\\]");
Matcher matcher = pattern.matcher(inputString);
String group1 = matcher.group(1);
String group2 = matcher.group(2);
String group3 = matcher.group(3);
我得到了以下错误:
java.lang.IllegalStateException: No match found
为什么
# 1 楼答案
This post回答了你最初的问题
This expression创建捕获组并以多种形式返回所需的输出:
如果你愿意的话,你可以进一步简化它
Java测试
JavaScript演示
正则表达式描述图
此图显示了表达式的工作方式,您可以在link中可视化其他表达式:
基本性能测试
这个JavaScript片段使用一个简单的100万次
for
循环来显示表达式的性能