调整某些内容或内容的位置,内容的内容或位置应符合某些条件。
那么零宽度断言是什么?零宽度是什么意思?
从流行的角度来看,零宽的字面意义是与宽度匹配到零的断言。
SO称为匹配宽度为零,这意味着此断言正在起作用:
这三个点不仅显示了零宽度断言的定义,而且还说明了零宽度断言的两个特征:非捕捉和不食用字符
我将这两个特征放在下一章中。
因为背面有一些案例代码,为了使每个人都能更清楚地理解代码,所以本章首先讨论零宽单词表达式
(?= exp)正(正预测)匹配特定位置的前奏。随后的内容与表达式EXP(?<= exp)阳性(回顾性)和邮政 - 评估不匹配一定位置。负(负)审查)发布断言以匹配特定位置。
现在有这样的需求:
在弦乐“北京(Xicheng District)(Haidian District)”中,删除了尚未包装的角色
这个怎么做?
该请求是取出拆卸字段,并且必须遵循该字段的背后,这很简单。
然后,我可以写一个零宽的单词表达式,以查看它是否可以满足需求:
console.log(reg.exec('北京(Chaoyang District)(Chaoyang District)(Xicheng District)(Haidian District)')
// [“北京”,索引:0,输入:“北京(西城)(Haidian District)(Haidian District)”,组:不确定]
console.log('北京(Chaoyang District)(Xicheng District)(Haidian District)。
// [“北京”,索引:0,输入:“北京(西城)(西城)(Xicheng District)”,组:不确定]简单地解释,这可以被视为两个部分,即
假设您已经在正则表达式中知道:
然后上一部分可以匹配给定字符中包含的所有字符,然后零宽的单词的一部分为匹配增加了条件。遵循匹配的内容。
您可能有疑问,如果我经常以这种方式写,为什么结果是错误的?
我首先解释说,这是在这里加入贪婪模式和非纠正模式,因为上述情况是首先主张的正面(正面预测)的情况,互联网上的某些人说,积极的零宽 - 宽度断言是从右到左执行。我不会批评,我只是希望每个人都能抛光。
那么为什么缺少一个问号?
如上所述,在此表达式中,这意味着最多不匹配或最多匹配一次。这是非绿色模式。
表达式在贪婪模式下运行,而不是添加。什么是贪婪模式?也就是说,为了匹配尽可能多的匹配,匹配匹配和匹配,贪婪,总是与字符串的末端匹配
由于字符串中有三个,在贪婪的模式下,它将始终与字符串的末端匹配,并且将获得此结果。
第一章已经说出了零宽单词及其特征的定义。这是这两个特征的两个特征:非捕捉特征,而不是进食特征
这是零宽单词,非捕捉特征的基本特征
我假设您知道您可以在数据包的正则表达式中使用它,一个是组。因此,我将举一个使用数据包值替换字符的示例:
上面的代码,我现在使用一个组来获取并替换正确的字符,现在更改代码,以查看其将是什么:
显然,尽管该方法返回正确的结果,但替换无法达到所需的效果,并且该结果与使用非捕捉组的使用一致:
因此,我们得出结论:
尽管第二个代码片段也用于分组,因为该数据包使用零宽单词的表达式,因此规律性不会返回到目标参考,因此替换不能成功。
结果,此示例是一个很好的证据,表明零宽单词具有非捕获的特征。
零字词的另一个功能不是吃角色。
这不是不吃人物的普通饮食感,但是零宽的断言不会占据搜索位置。这不是要找到的内容。因此,正则表达式与零宽度断言本身不匹配。
在这里,我们扩展了一个概念。
此概念是常规对象的属性,称为正则表达式下一个匹配的起始位置。
如果我们使用常规方法,例如等待方法,我们可以清楚地看到影响:
该代码的返回结果,我相信许多人会判断错误,我直接将结果放在下面
[“ a”,“ a”,index:0,输入:“ A”,组:未定义]
null [c“,“ c”,索引:0,输入:“ C”,组:未定义] null [e“ e”,“ e”,index:0,输入:“ e”,组:固定效率不足]
震惊了吗?
这很好笑。简而言之,当全球比赛成功时,它指向了成功匹配的角色索引。再次匹配时,继续从位置进行匹配。
请注意,阵列中每个项目的长度为1。如果值大于或等于1,则自然匹配的结果为;在不匹配结果的情况下,默认值0的值,下一个匹配是非null的结果。
因此,我们得出的结论是,随着匹配结果的改变
在下面,我们使用零 - 宽度断言进行尝试。
我不知道您是否可以猜到这个结果?
[“”,索引:0,输入:“ A”,组:未定义]
[“”,索引:0,输入:“ b”,组:未定义] [“,index:0,输入:“ C”,组:未定义] [“,index:index:0,输入:” D”,组:未定义] [“,索引:0,输入:“ E”,组:未定义]
而且,由于正则表达式与零宽度断言本身不匹配,因此零宽度的断开连接不会更改值,因此它返回空值,但不会返回空的(null)。
如果您仍然无法理解,请尝试查看以下代码:
此代码非常简单,结果只能匹配一个项目
[“他”,索引:0,输入:“你好,这是他的,那是个帅
显然,当Reg匹配时,表达式的中间已经结束,只有匹配,这可以更明显地反映不吃角色的特征。
通常,根据断言的方式将零宽度断言分为四类,这是:
用JavaScript的语言,仅支持第一个断言。
这是一个断言,当返回非空结果之前,当前部的内容或后面的内容后面的内容必须与表达式EXP匹配
负面的断言是,当正面的内容或背后的内容与表达式EXP不符时,它将返回到非空的结果。
第一个断言是将某个位置背后的内容与表达式Exp匹配
后来,断言是将某个位置前面的内容与表达式匹配
示例1是我在采访问题中发现的
38元穿着衣服,62元的鞋子,15元的剪发,45元吃晚饭,30元出租车和10元的冰淇淋。
回答:
示例2
“我喜欢吃饭,睡觉,看电影,”
回答:
这两个示例相对简单,因此我不会坐得太多,无法解释太多。
例如,我在面试问题中找到了它
测试文件是否为.css后缀,但不能是.min.css,例如:
测试('a.min.css');// false测试('B.CSS');// true Test('C.Mining.css');// 真的
回答:
这是一个文件名,始于.min.css末尾的任何字符的末尾。在剩余的文件名中找到以剩余文件名结尾的文件名
console.log('北京(Chaoyang District)(Xicheng District)(Haidian District)'。
// [“北京(Chaoyang district)(Xicheng District)”,索引:0,输入:“北京(Chaoyang district)(Xicheng District)(Haidian District)(Haidian District)(Haidian District)”,组:不确定的] 0不容易,如果此含义不容易文章帮助您,请移动手指并再次放弃?
作者:阳光同学