我的问题是
我可以在所有情况下使用lookahead|lookbehind
代替独立lookahead
或lookbehind
吗?
我只是想想
(?=...)|(?<=...)
与\b
就我们而言,我们不需要告诉我们想要使用左或右词边界(或者向后或向前看)但只想说“其中任何一个”。
从这个问题What's the difference between \b and \>, \< in regex?:
我们会看到我们可以使用\b
代替\<
和\>
对于(?=...)|(?<=...)
,我不确定在所有情况下我们都可以使用(?=...)|(?<=...)
代替独立(?=...)
或(?<=...)
,这是不安全的。
如果您有任何(?=...)|(?<=...)
无法使用的示例,而不是(?=...)
或(?<=...)
,请告诉我。
答案 0 :(得分:0)
顺序外观是合乎逻辑的AND 如果你把它们放在交替之间,它们就是符合逻辑的OR。
你可以嵌套外观。
(?= a | (?<! b ) ) [^c]
相当于
(?: (?= a ) | (?<! b ) ) [^c]
要记住的是,外观可以避免回溯 当您进入环视时,它会保持一个单独的搜索位置。