正则表达式替换数字

时间:2013-09-18 20:24:01

标签: regex string replace

使用正则表达式如何将1,186.55替换为1186.55?

我的搜索字符串是

\b[1-9],[0-9][0-9][0-9].[0-9][0-9]

工作正常。我似乎无法让替换部件工作。

4 个答案:

答案 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/