在正则表达式中特殊地使用’*’
发布时间: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,'*')) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读