Javascript regex-关于字符前后的空字符串的文档
关于这个问题: 及Javascript regex-关于字符前后的空字符串的文档,javascript,regex,Javascript,Regex,关于这个问题: 及 我不知道每个字母前后的空字符串的解释。我第一次听到这个。因为我现在有点困惑,找不到关于它的任何其他来源,所以我还可以在哪里阅读它。匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配 如果没有匹配项,它将前进到下一个索引并重试 如果存在匹配项,它将返回该匹配项,然后在匹配结束时再次尝试匹配。如果最后一个匹配项与空字符串匹配,则将前进到下一个字符 依此类推,对于每个匹配(匹配时)或每个字符(不匹配时) regexd*中的问题是它接受一个空匹配-这意味着空字符串与模式
我不知道每个字母前后的空字符串的解释。我第一次听到这个。因为我现在有点困惑,找不到关于它的任何其他来源,所以我还可以在哪里阅读它。匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配
- 如果没有匹配项,它将前进到下一个索引并重试李>
- 如果存在匹配项,它将返回该匹配项,然后在匹配结束时再次尝试匹配。如果最后一个匹配项与空字符串匹配,则将前进到下一个字符
d*
中的问题是它接受一个空匹配-这意味着空字符串与模式匹配。这意味着你总能找到匹配的
让我们在dddxddd
字符串上尝试d*
模式:
以下是初始位置:
dddxdddd matches: []
^
^
实际上意味着光标位于第一个d
之前。您应该将光标视为字符串中两个字符之间的。这将帮助您了解匹配过程
让我们插入虚构的空格来说明:
d d d x d d d d matches: []
^
我们在这里得到第一个匹配,因为第一个字符是ad
:
dddxdddd
\_/
匹配后,我们将光标放在匹配结束的位置,在d
和x
之间:
d d d x d d d d matches: ["ddd"]
^
我们试着再次匹配。匹配成功,d
和x
之间的空字符串。当我们得到一个空匹配时,我们前进光标:
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", ""]
匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配
- 如果没有匹配项,它将前进到下一个索引并重试李>
- 如果存在匹配项,它将返回该匹配项,然后在匹配结束时再次尝试匹配。如果最后一个匹配项与空字符串匹配,则将前进到下一个字符
d*
中的问题是它接受一个空匹配-这意味着空字符串与模式匹配。这意味着你总能找到匹配的
让我们在dddxddd
字符串上尝试d*
模式:
以下是初始位置:
dddxdddd matches: []
^
^
实际上意味着光标位于第一个d
之前。您应该将光标视为字符串中两个字符之间的。这将帮助您了解匹配过程
让我们插入虚构的空格来说明:
d d d x d d d d matches: []
^
我们在这里得到第一个匹配,因为第一个字符是ad
:
dddxdddd
\_/
匹配后,我们将光标放在匹配结束的位置,在d
和x
之间:
d d d x d d d d matches: ["ddd"]
^
我们试着再次匹配。匹配成功,d
和x
之间的空字符串。当我们得到一个空匹配时,我们前进光标:
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", ""]
并不是说“每个字母前后都有空字符串”。您的问题的答案在您链接的问题的答案中。。。“您的正则表达式将“”空字符串与
d*
匹配,因为*
量词表示零或多次,这里是零d
。”并不是说“每个字母前后都有空字符串”。您的问题的答案在您链接的问题的答案中。。。“您的正则表达式将“”空字符串与d*
匹配,因为*
量词表示零或多次,这里是零d
。”这终于有意义了。谢谢你的例子,以及带项目符号的要点…-)它终于有意义了。感谢您提供的示例和项目符号点…-)