正则表达式匹配但从捕获组中排除字符

时间:2014-08-25 09:46:03

标签: regex

我有以下正则表达式: -

^(?:\[ [^\]]+ \]) ([\-\£]{1,2}[0-9]+\.[0-9][0-9]?)?

以下文字: -

John Doe
+++++++++++++++++++++++++++++++++++++++++++
Blah blah
+++++++++++++++++++++++++++++++++++++++++++
[ √ ] £3.00 Red
[ √ ] £2.00 Blue
[ √ ] £55.55 Yellow
[ √ ] -£41.75 PAYMENT
[ √ ] £5.00 Green
[ √R ] £10.00 Pink
+++++++++++++++++++++++++++++++++++++++++++
Belugh
+++++++++++++++++++++++++++++++++++++++++++
Blah blah
Blah

正则表达式正常并匹配: -

£3.00
£2.00
£55.55
-£41.75
£5.00
£10.00

我想要做的是让正则表达式与'£'匹配,但不要在捕获组中返回它。

所以结果会是这样的: -

3.00
2.00
55.55
-41.75
5.00
10.00

重要的一点是' - '字符应该保留,但发生在'£'字符之前。

Theres a fiddle here

2 个答案:

答案 0 :(得分:2)

你能做的最好就是:

^(?:\[ [^\]]+ \]) (-?)[\£]([0-9]+\.[0-9][0-9]?)?

然后从匹配中提取第1组和第2组,并将它们添加到您正在使用的语言/环境中。

Demo

答案 1 :(得分:1)

我通过在捕获组中包含“£”然后简单地用我正在使用的语言的匹配结果中的“无”替换该符号来做到这一点。