2013-03-17 73 views
0

我有一項任務,它要求我用緊隨其後的子字替換由@符號終止的字符模式。因此,例如,給出[email protected],替換將產生postsymbol用嵌入的@符號替換後面的子字

我目前使用這種模式'/(^|\s)@([a-z0-9_]+)/'做了更換,但我的測試者給我的反饋,在@前面把「,導致更換失敗。

我怎樣才能正確地解決這個模式輸出。類似的東西來'/(^|\s)(@|"@)([a-z0-9_]+)/'

+0

這是使用PHP ? – Mooseman 2013-03-17 22:53:28

+0

對不起..沒有提及使用preg_replace – Grmn 2013-03-17 22:53:48

+0

你想做什麼? – h4unt3r 2013-03-17 23:00:34

回答

1
/(^|\s)(@|"@)([a-z0-9_]+)/ 

如果你添加一個新的match group$2變得$3

什麼你應該做的是SIM卡層使得"可選:

...."[email protected] 

或者使用一個非獲取匹配組:

....(?:@|"@).... 

或者可能把它作爲另一種選擇爲第一組:

....(^|\s|").... 
+0

*另請參閱[開源RegexBuddy替代品](http://stackoverflow.com/questions/89718/is-there)和[在線正則表達式測試](http://stackoverflow.com/questions/32282/regex-testing)對於一些有用的工具,或[RegExp.info](http://regular-expressions.info/)更好的教程。 – mario 2013-03-17 23:03:15

+0

感謝您的正則表達式的鏈接..書籤那一個:)去了這個''/(^ | \ s)?@([a-z0-9 _] +)(?)/'' – Grmn 2013-03-17 23:10:24