行の先頭に出現するか、またはその後に「a」が続く「b」を検索したいとします。
re.match('[\^a]b','b')
は一致するのに、 は一致しないのはなぜですかre.match('^b','b')
?
アップデート:search
の代わりにを使うべきだったことに気付きましたmatch
。 'b'、'cab'、'ab'、'bc'、'abd' のようなものにプラス記号を使いたいのです。
ベストアンサー1
正規表現はまたはの[\^a]b
いずれかに一致するため、文字列 とは一致しません。ab
^b
'b'
文字列の先頭にのみ一致することに注意してください。re.match()
正規表現の先頭に文字列の先頭アンカーがあるかのようになります (^
または\A
複数行オプションが有効になっています)。
したがって、「行の先頭に出現するか、または 'a' が続く 'b' を検索する」には、re.search()
次の正規表現を使用する必要があります。
(^|a)b
私は他の回答とは少し違った解釈をしていることに注意してください。考える要件は、 の'bob'
だけでなく のの 'b' も一致させたいということを意味します。そのため、行頭要件は、が先行しないのみに該当します。ab
'taboo'
b
a
グループ内のこの交替方式は、 よりもスケーラブルなソリューションを提供するため、文字列の先頭または、、、、が先行する場合に^b|ab
一致させるには、以下を使用できます。b
a
x
2
5
(^|[ax25])b