在Regex中进行字符扩展后,是否始终执行环绕声?

时间:2015-08-24 10:26:39

标签: regex regex-lookarounds lookaround

我试过这个

正则表达式

^(?:(?![_]{2}).)+$

文字:

abcc..abc

abcdefgh_

abcd_abcd

abc_a_abc

abc__abcd

a__abcde _

abc++abcd

高亮文本意味着匹配。

上面的正则表达式字面意思是“匹配除__之外的任何字符构造的任何行”,我只是想知道这个正则表达式的评估过程,在我理解的过程中假设这样工作

考虑文字:abc__abcd

评估过程:

  1. 检查条件^(匹配)。
  2. 检查条件.+(匹配)。
  3. 检查条件$(匹配)。
  4. 到目前为止,所有正则表达式仍然可以与我们考虑的文本匹配。

    1. 检查负向前瞻的状况。
    2. (?![_]{2})a(?![_]{2})b(?![_]{2})c(?![_]{2})_(?![_]{2})_(?![_]{2})a(?![_]{2})b(?![_]{2})c(?![_]{2})d

      负向前瞻执行:

      (?![_]{2}) ab (match)
      (?![_]{2}) bc (match)
      ...
      (?![_]{2})__ (not match)
      ...
      

      我的理解是否正确?

0 个答案:

没有答案