私はHOWTOとre
モジュールのドキュメントを何度も読んできましたが、Python正規表現でオプション性とグループ化がどのようにやりとりされるのか混乱しています。私が望むのは、グループ内のすべてのものをマッチさせるか、まったくマッチさせることではありませんが、部分文字列がマッチングしていることがわかります。ここでは、最小限の例です:Pythonでオプションの完全な文字列と正規表現を一致させる
>> re.compile(r"(test)?").search("tes")
<_sre.SRE_MATCH at 0xBlahBlah>
私はオプションとしてマーク文字列全体test
を持っているので、私は、ないが一致することを期待。私は理解していないのは何ですか(文書の一部)?次のように
私が実際に興味があるものに近いです問題のバージョンは次のとおりです。
>> re.compile(r"(distance|mileage)(\sbetween)?").search("distancebetween")
<_sre.SRE_MATCH at 0xBlahblah>
空白が一致することを余儀なくされていないということであるのはなぜ?
EDIT 2017年1月4日 の答えは、これまで有用であるが、私は、私は十分に明らかに私の必要性を説明していなかったと思います。要するに
、私は(そこに全体が)foo
またはbar
(その全体が)、またはfoo baz
またはbar baz
と一致していないし、何もします正規表現をしたいです。
>> m = re.compile("(foo|bar)(\sbaz)?")
>> m.search("foo ba")
<_sre.SRE_Match as 0xBlahblah>
>> m.search("foo ba").span()
(0, 3)
だから私は何が起こっていることは、それはfoo
に一致し、さらに下流何気にいないということであることがわかります。 baz
でのみ一致させるにはどうすればよいのですか?