这一定很简单,但我无法理解它。
我有一个字符串“qu'il”。
我还有一个字符串pttrns
,其中包含应检查的模式,如下所示:
pttrns = "^(([dcjlmnstDCJLNMST]'|[Qq]u'|[Jj]usqu'|[Ll]orsqu'))(.+)$";
我这样构造我的模式:p = Pattern.compile("^("+ p + ")(.+)$");
现在我尝试匹配:
m = p.matcher("qu'il");
我期望三个组:
- 0: qu'il
- 1:曲'
- 2: 伊尔
相反,我得到
- 0: qu'il
- 1:qu'il
- 2:曲'
- 3:曲'
我该如何解决这个问题?
最佳答案
删除不必要的捕获组。而且您不需要在已锚定的正则表达式之前添加 ^(
。
pttrns = "^([dcjlmnstDCJLNMST]'|[Qq]u'|[Jj]usqu'|[Ll]orsqu')(.+)$";
p = Pattern.compile(pttrns);
关于java - 从字符串编译的正则表达式的匹配器未命中组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938943/