【发布时间】:2019-10-03 19:16:56
【问题描述】:
正向回溯的代码 sn-p 如下
public class PositiveLookBehind {
public static void main(String[] args) {
String regex = "[a-z](?<=9)";
String input = "a9es m9x us9s w9es";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
System.out.println("===starting====");
while(matcher.find()) {
System.out.println("found:"+matcher.group()
+" start index:"+matcher.start()
+" end index is "+matcher.end());
}
System.out.println("===ending=====");
}
}
我原以为我应该有 4 个匹配项,但令我惊讶的是,输出显示没有匹配项。
谁能指出我的错误?
据我了解,这里的正则表达式是字母表前面有数字 9,在 4 个位置都满足。
【问题讨论】:
-
对于以数字 9 开头的字母,将正则表达式更改为
(?<=9)[a-z]Demo -
@Matt.G 感谢您的快速回复。我正在学习正则表达式,并且在这些lookarouds 中感到非常困惑。您能否指出任何显示正则表达式引擎如何运行的在线资源。以及为什么我对后视的理解是错误的
-
错误:匹配一个字母(a-z)并往后(不是前面)寻找一个9,即如果前面找到的letter是9(匹配一个字母之后,pointer在那个字母之后,往后看会看pointer之前,也就是已经匹配的)
标签: java regex regex-lookarounds lookbehind