在正则表达式中特殊地使用’*’

前端之家收集整理的这篇文章主要介绍了在正则表达式中特殊地使用’*’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在编写正则表达式模式时,将所有连续体’1’和单个’1’替换为’s’.我发现这很混乱,”(用于匹配1或更多)的使用给出了预期的结果,但’*’给出了奇怪的结果
>>> l='100'
>>> import re
>>> j=re.compile(r'(1)*')    
>>> m=j.sub('*',l)
>>> m
'*0*0*'

虽然”的使用给出了预期的结果.

>>> l='100'
>>> j=re.compile(r'1+')
>>> m=j.sub('*',l)
>>> m
'*00'

正则表达式中的’*’如何给出这个,而它的行为是匹配0或更多.

(1)*表示“匹配0或更多1”.因此,对于100,它匹配1,0和0之间的空字符串,以及最后0之后的空字符串.然后用’*’替换空字符串. 1在匹配中至少需要一个1,因此它与字符之间的边界不匹配.

对于那些好奇的读者,是的python输出是* 0 * 0 *而不是** 0 * 0 *.这是一个测试python script. (Regex101的输出错误,因为它不使用实际的python正则表达式引擎.在线正则表达式测试人员通常会使用PCRE(在PHP和Apache HTTP Server中提供),并伪造目标正则表达式引擎.总是测试你的正则表达式在实时代码!)

在这里,您可以在JavaScript中看到输出将是** 0 * 0 *(它将匹配1和0之间的空字符串作为新匹配)这是“正则表达式风格”为何重要的一个主要示例.不同引擎使用略有不同的规则. (在这种情况下,如果新匹配从0开始或字符边界)

console.log("100".replace(/(1)*/g,'*'))
原文链接:https://www.f2er.com/regex/356614.html

猜你在找的正则表达式相关文章