使用正则表达式如何将 1,186.55 替换为 1186.55?
我的搜索字符串是
\b[1-9],[0-9][0-9][0-9].[0-9][0-9]
效果很好。我似乎无法让替换部件工作。
您的问题中的信息非常稀少。我尝试尽可能笼统地回答:
您可以通过使用量词来稍微缩短正则表达式,我会在第一步中做到这一点
\b[1-9],[0-9]{3}.[0-9]{2}
很可能您也可以替换[0-9]
为\d
, 也更具可读性 IMO。
\b\d,\d{3}.\d{2}
现在我们可以去更换零件了。在这里,您需要存储要保留的部分。您可以通过将该部分放入捕获组中,通过放置括号来做到这一点,这将是您的搜索模式:
\b(\d),(\d{3}.\d{2})
因此,现在您可以在替换字符串中访问这些捕获组的匹配内容。第一个开口括号是第一组,第二个开口括号是第二组,...
现在有两种可能性,您可以通过\1
或通过$1
您的替换字符串将是
\1\2
或者
$1$2
Python:
def repl(initstr, unwanted=','):
res = set(unwanted)
return ''.join(r for r in initstr if r not in res)
使用正则表达式:
from re import compile
regex = compile(r'([\d\.])')
print ''.join(regex.findall('1,186.55'))
使用str.split()方法:
num = '1,186.55'
print ''.join(num.split(','))
使用str.replace()方法:
num = '1,186.55'
print num.replace(',', '')
如果您只想删除逗号,您可以执行以下操作(在 java 或 C# 中):
str.Replace(",", "");
(在java中是replace
)
或者在 Perl 中:
s/(\d+),(\d+)/$1$2/