0

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

我的搜索字符串是

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

效果很好。我似乎无法让替换部件工作。

4

4 回答 4

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
于 2013-09-18T21:02:53.237 回答
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(',', '')
于 2013-09-18T21:13:23.137 回答
0

如果您只想删除逗号,您可以执行以下操作(在 java 或 C# 中):

str.Replace(",", "");

(在java中是replace

于 2013-09-18T20:26:13.843 回答
0

或者在 Perl 中:

s/(\d+),(\d+)/$1$2/
于 2013-09-18T20:40:34.520 回答