我有一个这样定义的模式:
private static final Pattern PATTERN = Pattern.compile("[a-zA-Z]{2}");
在我的代码中我正在这样做:
Matcher matcher = PATTERN.matcher(myString);
并使用 while 循环查找所有匹配项。
while (matcher.find()){
//do something here
}
If myString
is 12345AB3CD45
匹配器正在查找这两组两个字母(AB
and CD
)。问题是我有时会myString
as 12345ABC356
所以我希望匹配器首先找到AB
进而BC
(仅找到“AB”)。
我是否做错了,或者正则表达式错误,或者匹配器不能以这种方式工作?
您无法使用正则表达式多次匹配同一位置,但您可以使用一个技巧。
为此,您需要将您的模式封装在展望 http://www.regular-expressions.info/lookaround.html和一个捕获组:
(?=([A-Za-z]{2}))
,因为前瞻不匹配任何字符并且仅消耗一个位置。
您要查找的结果位于捕获组 1 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)