2011-07-06 47 views
1

好的,我有一個非常棘手的正則表達式問題。Lookaound正則表達式來評估雙方?

我需要匹配並用空格替換下列字符串中的+符號,因此左邊的字符串必須成爲右邊的字符串。

1: word+word = word word 
2: word+++word = word + word 
3: word.+word = word. word 
4: word,+word = word, word 

我已經成功地釘最「的時間與此,這之前檢查字符串和後加號:

(?<=[\w\.,])\+(?=[\w]) 

但是,我只能釘一組相鄰的加號在(2)在時間:

(?<=[\w\.,\+])\+(?=[\w]) // gets the left plus sign 
2: word+++word = word++ word 

(?<=[\w\.,])\+(?=[\w\+]) // gets the right plus sign 
2: word+++word = word ++word 

在我目前正則表達式待疲憊不堪狀態,我想知道如果我需要包裝的圖案在一個較大的條件下,或者如果我需要任一者或圖案實施在變臉。任何有正則表達式的人都在乎這個旋轉嗎?

+0

什麼'FOO ++++欄++++++ baz'? – Qtax

+0

你正在使用的是什麼編程語言?並非每種口味都支持環顧。 –

+0

由於你的正則表達式有問題,這意味着你的正則表達式可能不正確,爲什麼不用普通的話來寫你正在做的事? – sawa

回答

3

這應該對你的工作的例子:

(?<!\+)\+|\+(?!\+) 

替換爲空格。

例子:

perl -E "$_='a+b++a+++b++++c+++++d'; s/(?<!\+)\+|\+(?!\+)/ /g; say" 

輸出:

a b a + b ++ C+++ d 
相關問題