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

时间:2014-11-27 16:26:55

标签: python regex string

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

re.sub('[0-9].[0-9]0x', ?, string)

3 个答案:

答案 0 :(得分:1)

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匹配

答案 1 :(得分:1)

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

试试这个。看看演示。

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

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

答案 2 :(得分:1)

使用正向前瞻和后瞻性断言。

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

  • \.匹配一个文字点。