我可以在所有情况下使用(?= ...)|(?< = ...)而不是独立(?= ...)或(?< = ...)?

时间:2015-01-09 21:32:56

标签: regex lookahead lookbehind

我的问题是

我可以在所有情况下使用lookahead|lookbehind代替独立lookaheadlookbehind吗?

我只是想想

(?=...)|(?<=...)\b

类似

就我们而言,我们不需要告诉我们想要使用左或右词边界(或者向后或向前看)但只想说“其中任何一个”。

从这个问题What's the difference between \b and \>, \< in regex?

我们会看到我们可以使用\b代替\<\>

对于(?=...)|(?<=...),我不确定在所有情况下我们都可以使用(?=...)|(?<=...)代替独立(?=...)(?<=...),这是不安全的。

如果您有任何(?=...)|(?<=...)无法使用的示例,而不是(?=...)(?<=...),请告诉我。

1 个答案:

答案 0 :(得分:0)

顺序外观是合乎逻辑的AND 如果你把它们放在交替之间,它们就是符合逻辑的OR。

你可以嵌套外观。

(?=  a | (?<! b ) ) [^c]

相当于

(?: (?= a ) | (?<! b ) ) [^c]

要记住的是,外观可以避免回溯 当您进入环视时,它会保持一个单独的搜索位置。