在以下字符串中,我想只匹配10.00
Test(+$15.00)(dsfa) (+$10.00)
现在我有:
\([\+|\-]\$(?:[0-9\.]+?)\)$
但它捕获(+ $ 10.00),我想只拥有捕获组的内部。
编辑: 我正在使用JS
答案 0 :(得分:4)
问题是你没有在你的模式中定义一个捕获组,你只有完全不同的文字括号。这将为您提供使用简单括号(...)
定义的捕获组1 中的结果:
\([+-]\$([0-9.]+)\)$
(请注意,不需要转义多个字符,特别是所有特殊字符都被视为字符类中的文字。)
在先例模式中,我使用捕获组从整个结果中提取我想要的内容。通过使用lookarounds(使用支持外观的正则表达式引擎),可以仅获得您想要的整个结果:
(?<=\([+-]\$)[0-9.]+(?=\)$)
答案 1 :(得分:1)
使用捕获组时,JavaScript很容易。测试函数的返回值将是一个数组,其中元素0是完全捕获,元素1是目标结果。
str = "Test(+$15.00)(dsfa) (+$10.00)"
matches = str.match(/(?:[+-]\$)(\d+\.\d\d)(?:\))$/)
result = matches[1]
matches
此处为["+$10.00)", "10.00"]
,result
为"10.00"
。