关于字符前后空字符串的文档
documentation on empty strings before and after characters
关于这个问题: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
'_/
匹配后,将光标放置在匹配结束的地方,即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", ""]
相关文章:
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- 在 $( 文档 ).ready 函数中使用字符串名称调用 javascript 函数
- 如何检索其属性为给定参数的子字符串的所有文档
- 将字符串转换为HTML文档
- 使用 shift 在具有字符串/数组的文档中查找元素
- 如何将 HTML 字符串附加到文档片段
- 如何将一些参数从javascript接收响应字符串 asp.net 页面并更新html文档
- 在 html 文档中突出显示不同字符串的最快方法是什么
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- JS未终止的字符串文字文档写入
- MongoDB(通过Meteor)在更新集合文档时将对象属性视为字符串
- 如何在Mongo中替换所有文档中的字符串
- 正则表达式字符串在文档中替换为 JavaScript
- javascript DOMParser解析文档而不是字符串
- Google Apps脚本中Google文档中字符串的文本格式
- 查找具有字符串ID'数组的文档;s在MongoDB中
- 从字符串创建一个 DOM 文档,不带 JQuery
- JavaScript文档对象lastModified使用toLocale字符串
- 一次加载两个HTML文档(从字符串加载iframe内容)
- 文档的地方.在元素中写入字符串