在下面的字符串,我想現在我要匹配只有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