Pythonの正規表現は、単一の文字列をキャプチャしていません

unDucked:
bigger_list_of_names = ['Jim', 'Bob', 'Fred', 'Cam', 'Reagan','Alejandro','Dee','Rana','Denisha','Nicolasa','Annett','Catrina','Louvenia','Emmanuel','Dina','Jasmine','Shirl','Jene','Leona','Lise','Dodie','Kanesha','Carmela','Yuette',]
name_list = ['Jim', 'Bob', 'Fred', 'Cam']
search_people = re.compile(r'\b({})\b'.format(r'|'.join(name_list)), re.IGNORECASE)
print(search_people)

for names in bigger_list_of_names:
    found_them = search_people.search(names, re.IGNORECASE | re.X)
    print(names)
    if found_them:
        print('I found this person: {}'.format(found_them.group()))
    else:
        print('Did not find them')

私が午前問題は、正規表現は、すべての名前を検索し、ヒットし続けていないでelse:、私が試してみましたre.searchre.findallre.findre.matchre.fullmatch彼らはすべてのリターンなどNone私が使用している場合、それは何かを見つけるための唯一の方法ですre.finditerが、それは私が使用することはできません.group()

出力がre.compileありますre.compile('\\b(Jim|Bob|Fred|Cam)\\b', re.IGNORECASE)

私が上でそれをテストしたhttps://regex101.com/https://i.stack.imgur.com/lL3mh.png)、それはその作業のようではなく、pythonで見えます。

ここに私のコンソール出力は次のようになります。 https://i.stack.imgur.com/kxdcc.png

私は何も足りませんか?

newcool:

私は少し遅れが、私は前に同じ問題がありました。(あなたはそれがオフになっていない場合)、あなたはそれが言うオートコンプリートの事を確認した場合、あなたは、pycharmを使用しているように見えます:

pattern.search(self, string, pos, endpos)

代わりにフラグを追加する.search()部分、あなたはにフラグを追加する必要がありますre.compile一部。以来re.compile()、実際にフラグを受け付けます。

それはpycharmの自動補完でどのように見えますか:

re.compile(pattern, flags)

だから、このようなビットになります:

search_people = re.compile(r'\b({})\b'.format(r'|'.join(name_list)), re.IGNORECASE | re.X)

for names in bigger_list_of_names:
    found_them = search_people.search(names)
    print(names)
    if found_them:
        print('I found this person: {}'.format(found_them.group()))
    else:
        print('Did not find them')

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=395742&siteId=1