我想实现以下语义:
while (EOF is not reached) {
if (scanner.findWithinHorizon("^" + pattern1, 0)) {
// do something
} else if (scanner.findWithinHorizon("^" + pattern2, 0)) {
// do something else
} else {
// report error
}
}
好。这里的问题是Scanner
与新的"流的头部不匹配"用锚定的正则表达式。例如,我们说我们有一台扫描仪new Scanner("11")
。我们第一次通过调用^1
将其与正则表达式scanner.findWithinHorizon("^1", 0)
匹配将返回匹配的字符串"1"
。但是,第二个调用将返回null
,而不是我想要的行为,这将再次返回"1"
,因为在使用第一个'1'
之后,流的新头仍然是'1'
1}}。
有什么方法可以在Java中获得我想要的效果吗?
提前致谢。
答案 0 :(得分:0)
说我们有'123'。如果我匹配'2'则匹配。但是我想要它 只有在我之前匹配'1'时才匹配 “
你需要的是一个外观操作员,这允许你根据前一个角色匹配一个角色。 (?=) - 积极前瞻 (?< =) - 积极的背后隐藏
如果你想根据前面的内容进行匹配,你可以使用前瞻。
以下是Implementing look behind in java
的答案看看正面(?< =)
查找表达式A,其中表达式B在
之前