使用正则表达式如何将1,186.55替换为1186.55?
我的搜索字符串是
\b[1-9],[0-9][0-9][0-9].[0-9][0-9]
工作正常。我似乎无法让替换部件工作。
答案 0 :(得分:2)
您的问题中的信息非常稀少。我尽量回答:
你可以通过使用量词来缩短正则表达式,我会在第一步中做到这一点
\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
答案 1 :(得分:1)
的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(',', '')
答案 2 :(得分:0)
如果你只想删除你可以做的逗号(在java或C#中):
str.Replace(",", "");
(在java中是replace
)
答案 3 :(得分:0)
或者在Perl中:
s/(\d+),(\d+)/$1$2/