关于字符前后空字符串的文档

documentation on empty strings before and after characters

本文关键字:字符串 文档 于字符 字符      更新时间:2023-09-26

关于这个问题:https://softwareengineering.stackexchange.com/questions/291273/why-regex-when-using-global-search-and-0-quantifier-match-the-end-of-the-st和匹配不包含单词的行的正则表达式?

我不知道每个字母前后空字符串的解释。我第一次听说。我还能在哪里读到它,因为我现在有点困惑,找不到任何其他的来源。

在匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配。

  • 如果没有匹配,则前进到下一个索引并再次尝试。
  • 如果有匹配,它返回它,然后在匹配结束时再次尝试匹配。如果最后一个匹配匹配了空字符串,则继续进行下一个字符。

依次类推,对于每个匹配(匹配时)或每个字符(不匹配时)。

正则表达式d*中的问题是它接受空匹配 -这意味着空字符串匹配模式。这意味着总是得到匹配。

让我们在dddxdddd字符串上尝试d*模式:

初始位置:

dddxdddd     matches: []
^

^实际上意味着游标在第一个d之前。应该将游标视为位于字符串中两个字符之间的。这将帮助您理解匹配过程。

让我们插入一些虚构的空格来说明

 d d d x d d d d     matches: []
^

我们在这里得到第一个匹配,因为第一个字符是d:

dddxdddd
'_/

匹配后,将光标放置在匹配结束的地方,即dx之间:

 d d d x d d d d     matches: ["ddd"]
      ^

我们再试着匹配。通过dx之间的空字符串匹配成功。当得到空匹配时,向前移动光标:

 d d d x d d d d     matches: ["ddd", ""]
        ^

然后再次尝试匹配,得到dddd子字符串:

dddxdddd
    '__/

我们把光标放在它的后面:

 d d d x d d d d     matches: ["ddd", "", "dddd"]
                ^

现在在最后一个d和字符串的末尾之间。同样,我们尝试匹配,并且成功地使用了一个空字符串:

 d d d x d d d d     matches: ["ddd", "", "dddd", ""]
                  ^

如果我们尝试移动光标,它现在将超过字符串的末尾,这意味着我们已经找到了所有匹配项,我们完成了。

最终结果:

["ddd", "", "dddd", ""]