1
我有三種可能的形式將通過正則表達式,我想將它們全部匹配。正則表達式在字符串中包含可選文本的Python中
text1
text1 text2
text1 text2 ;text3
我已經走到這一步,(.*?)(?:\s)(.*)
工作'text1 text2'
,但我能夠處理所有三種情況下,如果分號存在。有任何想法嗎?
我有三種可能的形式將通過正則表達式,我想將它們全部匹配。正則表達式在字符串中包含可選文本的Python中
text1
text1 text2
text1 text2 ;text3
我已經走到這一步,(.*?)(?:\s)(.*)
工作'text1 text2'
,但我能夠處理所有三種情況下,如果分號存在。有任何想法嗎?
以下應該工作的同時,也會把「文本1」,「文本2」和「文字3」到正確的組:
^(.+?)(?:\s(.*?)(?:\s;(.*))?)?$
看到它的工作:http://www.rubular.com/r/IyPyF3wXLx
這裏有一個解釋:
^ # start of string
(.+?) # put text1 in group 1
(?: # start an optional non-capturing group
\s(.*?) # space followed by text2, put text2 in group 2
(?: # start an optional non-capturing group
\s;(.*) # space and semicolon, followed by text3, put text3 in group 3
)? # end of optional non-capturing group
)? # end of optional non-capturing group
$ # end of string
中間的可選組讓您的正則表達式,如果它們存在匹配文本2和文字3,但仍然匹配,如果他們不。
你想要的匹配文本不是真的text1,text2和text3,對不對?你能給出更多的解釋文字形式來匹配嗎? – macduff 2012-02-21 20:58:29