0

我有一个字符串应该列出一些美元金额,如下所示:

4000.05 . 5.200000000 300.650000 2000 .

它最终应该看起来像这样:

4000.05 5200000000 300650000 2000

删除所有非小数点。我正在尝试使用此正则表达式来删除所有没有后跟两个数字然后是非数字字符的句点:

re.sub(".(?!([0-9])?!([0-9])?=([0-9]))","",f)

但这最终会清空整个字符串。我怎样才能做到这一点?

4

2 回答 2

3

首先,adot是正则表达式中的元字符,可以匹配任何字符。你需要逃避它。或者放入一个字符类,其中元字符没有任何特殊含义。当然,您需要转义右括号],否则将被视为字符类的结尾。

其次,您的负面展望是有缺陷的。

尝试这样的事情:

re.sub(r'[.](?![0-9]{2}\W)',"",s)
于 2013-08-14T21:50:13.977 回答
1

你需要这样的东西。

string = '4000.05 . 5.200000000 300.650000 2000 .'
print re.sub(r'[.](?![0-9]{2}\D)', '', string)

正则表达式:

[.]                      any character of: '.'
  (?!                    look ahead to see if there is not:
    [0-9]{2}             any character of: '0' to '9' (2 times)
            \D           match non-digits (all but 0-9)
  )                      end of look-ahead
于 2013-08-14T22:02:00.603 回答