regex
moduleを組み合わせることという名前のリスト(実際にセット)を持つ前に、あなたは正しく文字列をエスケープするようにしてください:
#!/usr/bin/env python
import regex as re # $ pip install regex
p = re.compile(r"\L<words>", words=['fun', 'dum', 'sun', 'gum'])
if p.search("I love to have fun."):
print('matched')
ここwords
だけですあなたは好きなものを使うことができます。 .*
の代わりに、
.search()
のメソッドが使用されます。
STDLIBのre
モジュールを使用して、指定されたリストをエミュレートするには、次の
#!/usr/bin/env python
import re
words = ['fun', 'dum', 'sun', 'gum']
longest_first = sorted(words, key=len, reverse=True)
p = re.compile(r'(?:{})'.format('|'.join(map(re.escape, longest_first))))
if p.search("I love to have fun."):
print('matched')
re.escape()
は、個々の単語の内側
.*?
として(文字通りの言葉と一致するように)正規表現のメタ文字をエスケープするために使用されます。
sorted()
regex
動作をエミュレートし、それが比較、最初の選択肢の中最長の単語を置く:
>>> import re
>>> re.findall("(funny|fun)", "it is funny")
['funny']
>>> re.findall("(fun|funny)", "it is funny")
['fun']
>>> import regex
>>> regex.findall(r"\L<words>", "it is funny", words=['fun', 'funny'])
['funny']
>>> regex.findall(r"\L<words>", "it is funny", words=['funny', 'fun'])
['funny']
出典
2015-10-29 10:19:04
jfs
を 'と配列要素入会| DUM | |'接着剤として、 '楽しみとして文字列を形成することになるが日| gum'ました正規表現で使用することができます。 – Tushar
're.findall(r" ['\ w] + "、これはちょうど楽しみのためのzのためのstring_listの任意の" z "のre.search(' | '.join(string_lst)、input_string)' –
' ) ' –