繁体   English   中英

如何在Python中正确使用正则表达式的子函数?

[英]How do I properly use the sub function of regular expression in Python?

所以我有一个像7.50x的数字,我想转换为7.5x 我考虑过使用正则表达式。 我可以轻松地匹配此表达式,例如通过使用re.search('[0-9].[0-9]0x', string) 但是,我很困惑如何使用re.sub方法替换每个这样的数字。 例如,第二个参数应该是什么?

re.sub('[0-9].[0-9]0x', ?, string)
re.sub(r'([0-9]\.[0-9])0x', r'\1x', num)

测试

>>> import re
>>> num="7.50x"
>>> re.sub(r'([0-9]\.[0-9])0x', r'\1x', num)
'7.5x'
  • r'\\1x'这里\\1是从第一个捕获组([0-9]\\.[0-9])保存的值

    例如,对于输入7.50x ,捕获组与7.5相匹配(保存在\\1

0+(?![1-9])(?=[^.]*$)

试试看。看演示。

http://regex101.com/r/hQ9xT1/14

x=7.50x
re.sub(r"0+(?![1-9])(?=[^.]*$)","",x)

使用肯定的先行和后向断言。

>>> import re
>>> num="7.50x"
>>> re.sub(r'(?<=\d\.\d)0(?=x)', r'', num)
'7.5x'
  • (?<=\\d\\.\\d) ,数字0之前的数字将采用此数字点数字格式。
  • 并且匹配( 0 )之后的字符必须为x

  • \\. 匹配文字点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM