1
正規表現を実行する3つのフォームがありますが、それらをすべて一致させたいと思います。文字列にオプションのテキストを持つPythonの正規表現
text1
text1 text2
text1 text2 ;text3
私はこれまで(.*?)(?:\s)(.*)
'text1 text2'
のために働いてんだが、セミコロンが存在している場合、私は可能なすべての3つのケースを処理します。何か案は?
正規表現を実行する3つのフォームがありますが、それらをすべて一致させたいと思います。文字列にオプションのテキストを持つPythonの正規表現
text1
text1 text2
text1 text2 ;text3
私はこれまで(.*?)(?:\s)(.*)
'text1 text2'
のために働いてんだが、セミコロンが存在している場合、私は可能なすべての3つのケースを処理します。何か案は?
以下は、それはまた、正しいグループに「テキスト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