加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 22:54:39 所属栏目:百科 来源:网络整理
导读:在编写正则表达式模式时,将所有连续体’1’和单个’1’替换为’s’.我发现这很混乱,”(用于匹配1或更多)的使用给出了预期的结果,但’*’给出了奇怪的结果 l='100' import re j=re.compile(r'(1)*') m=j.sub('*',l) m'*0*0*' 虽然”的使用给出了预期的结果. l
在编写正则表达式模式时,将所有连续体’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,'*'))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读