我是Python正则表达式的新手:
我有一个要搜索的列表,如果其中包含员工姓名。

员工名称可以是:

  • 可以在开头,后跟空格。
  • 后跟®
  • 或后跟空格
  • OR可以在它的末尾和空格
  • 不区分大小写

  • ListSentence = ["Steve®", "steveHotel", "Rob spring", "Car Daniel", "CarDaniel","Done daniel"]
    ListEmployee = ["Steve", "Rob", "daniel"]
    
    ListSentence的输出为:
    ["Steve®", "Rob spring", "Car Daniel", "Done daniel"]
    

    最佳答案

    我认为您无需检查所有这些情况。我认为您需要做的只是检查单词中断。

    您可以使用|加入ListEmployee列表,以创建一个或正则表达式(也可以将其小写以区分大小写),并用\b包围以进行分词,这应该可以工作:

    regex = '|'.join(ListEmployee).lower()
    import re
    [l for l in ListSentence if re.search(r'\b(%s)\b' % regex, l.lower())]
    

    应该输出:
    ['Steve\xb6\xa9', 'Rob spring', 'Car Daniel', 'Done daniel']
    

    09-25 17:57