在下面的字符串,我想现在我要匹配只有10.00正则表达式:捕获捕获组的唯一内部
Test(+$15.00)(dsfa) (+$10.00)
:
\([\+|\-]\$(?:[0-9\.]+?)\)$
,但它抓住(+ $ 10.00) ,我想只有捕捉组的内部。
编辑: 我使用JS
在下面的字符串,我想现在我要匹配只有10.00正则表达式:捕获捕获组的唯一内部
Test(+$15.00)(dsfa) (+$10.00)
:
\([\+|\-]\$(?:[0-9\.]+?)\)$
,但它抓住(+ $ 10.00) ,我想只有捕捉组的内部。
编辑: 我使用JS
的问题是,你还没有定义在你的模式中捕获组,你只有文字括弧是完全不同的。这会给你捕获组的结果1 是与定义的简单括号(...)
:
\([+-]\$([0-9.]+)\)$
(注意几个字符不需要进行转义,特别是所有的特殊字符被视为字符类内的文字)。
在先例模式中,我使用捕获组来提取我想要的整个结果。有可能只是你想要什么用lookarounds(与正则表达式引擎,支持lookarounds)作为整个结果得出:
(?<=\([+-]\$)[0-9.]+(?=\)$)
它使用捕获组时,很容易在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"
。
谢谢你的回答,我意识到在卡西米尔的回答之后,regexpal正在对我说谎。虽然你的回答是正确的,但我会接受卡西米尔的事业,他有耐心带我度过我的错误;) – Pixy
您没有指定正则表达式的语言或变体,但试试这个:'\([\ + | \ - ] \ $?([0-9 \。] +?)\)$'。 – Turophile
这也捕获(+ $和) – Pixy