回答:
import re
word = 'fubar'
regexp = re.compile(r'ba[rzd]')
if regexp.search(word):
print 'matched'
xyz
)を検索し、これを実行するためのより効率的な方法を知りたいという同様のケースに取り組んでい'xyz' in given_text
ますre.compile(r'xyz').search(given_text)
。
[]
あなたの再にも一致するようにブラケットは、文字クラスが含まれています>>>ワード=「BA |」; regexp.search(word)<_sre.SRE_Match object at 0x101030b28>。すべてのパイプ記号を削除できます。
これまでで最高のものは
bool(re.search('ba[rzd]', 'foobarrrr'))
Trueを返します
bool
。OP:「True
単語にバー、バズ、またはバッドが含まれている場合は返す必要があります。」他の回答では、if
式を-の右側に自動変換する動作を使用しますbool
。例import re; rgx=re.compile(r'ba[rzd]'); rgx.search('foobar')
=> <re.Match object; span=(2, 5), match='bar'>
、ただしif(rgx.search(w)): print('y')
=> y
。自動変換のドキュメントに最も近い(アーカイブ)
Match
オブジェクトは常に真でありNone
、一致しない場合に返されます。真実をテストするだけです。
コード:
>>> st = 'bar'
>>> m = re.match(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
...
'bar'
出力= bar
search
機能が必要な場合
>>> st = "bar"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m is not None:
... m.group(0)
...
'bar'
regexp
見つからない場合は
>>> st = "hello"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
... else:
... print "no match"
...
no match
@bukzorが言及したように、st = foo bar
than matchは機能しません。したがって、を使用する方が適切re.search
です。
search
でいませんmatch
。(docs.python.org/library/re.html#matching-vs-searchingを参照してください。)また、単にではなく、実際の可能な引数を正しい順序で示した方がよいと思います...
。
st
する"foo bar"
と、matchメソッドはここでは機能しません。検索したい。
in
andで部分文字列を検索する際の複雑さの違いは何regex
ですか?
ここにあなたが望むことをする関数があります:
import re
def is_match(regex, text):
pattern = re.compile(regex, text)
return pattern.search(text) is not None
正規表現検索メソッドは、成功するとオブジェクトを返し、パターンが文字列で見つからない場合はNoneを返します。これを念頭に置いて、検索によって何かが返される限り、Trueを返します。
例:
>>> is_match('ba[rzd]', 'foobar')
True
>>> is_match('ba[zrd]', 'foobaz')
True
>>> is_match('ba[zrd]', 'foobad')
True
>>> is_match('ba[zrd]', 'foobam')
False
あなたはこのようなことをすることができます:
検索を使用すると、検索文字列と一致する場合、SRE_matchオブジェクトが返されます。
>>> import re
>>> m = re.search(u'ba[r|z|d]', 'bar')
>>> m
<_sre.SRE_Match object at 0x02027288>
>>> m.group()
'bar'
>>> n = re.search(u'ba[r|z|d]', 'bas')
>>> n.group()
そうでない場合は、Noneを返します
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
n.group()
AttributeError: 'NoneType' object has no attribute 'group'
そして、もう一度デモンストレーションするために印刷するだけです。
>>> print n
None
bool(re.search('ba[rzd]', 'sometext'))
。