2013-01-11 28 views
2

我正在寫一個匹配fooSVM??!的正則表達式。我想在此字符串中匹配SVM,這意味着我需要匹配foo,直到遇到?!。請注意,SVM可能是其他Unicode字符。正則表達式匹配,直到給定的文本?

我試過foo(.*)[?!]*但似乎沒有工作。

+0

當你說「我想匹配」,你的意思是檢索嗎?或者'SVM'是正則表達式匹配的文本? – fge

+0

@fge是的,我需要檢索SVM – wong2

+0

什麼味道的正則表達式? – cmbuckley

回答

3

只要不能換行,這將做到這一點:

foo([^?!]+)[?!] 

和檢索第一組。

foo  # Find "f", then "o", then "o", 
(   # begin capture 
    [^?!] # followed by any character which is not "!" or "?", 
    +  # once or more 
)   # end capture 
[?!]  # followed by either a "!" or a "?" 
+0

我怎麼能不重複'?!'部分,因爲我需要在這個過濾器列表中添加字符,所以我想保留在一個地方 – wong2

+1

好吧,如果你確定至少有一個如果沒有最終的字符類(即,'foo([^ ?!] +)'' – fge

+0

您可以使用非常規匹配,例如'foo(。*?)[?!]',但請注意最後的字符類不能得到一個'*'然後 – cmbuckley