2017-06-26 78 views
1

我試圖用正則表達式替換括號內的所有東西,但我似乎正在得到一個意想不到的匹配。正則表達式不返回預期的匹配

這裏是我想匹配的文本:

Foo (bar) 

這裏的正則表達式:

/(?=\().*(?=\))/ 

我期待它的括號內返回的一切:即.*bar。但是,它返回第一個括號與文本:(bar

這不應該發生,對吧?由於第一支架處於正前瞻(?=...) ...

請告訴我,我要去哪裏錯了...

+2

我認爲你需要改變你的'(?= \()'到'(?<= \() 「讓它看起來在後面,而不是向前看。 – brittenb

回答

2

感謝brittenb我不得不改變我先行成回顧後。

所以我的正則表達式成了

/(?<=\().*(?=\))/ 
+0

Javascript不允許向後看。當我在控制檯中嘗試解決方案時,我得到'無效的正則表達式'。 –

+0

似乎很適合我... –

0

/\([^\)]+\)/

從字符串Foo (bar)這個表達式將返回文本(bar)

擊穿:

/     #delimiter 
    \(   #begins with a open-parenthesis 
     [^\)]+ #all content that is not a close-parenthesis 
      \) #ends with a close-parenthesis 
       /#end delimiter