编写这个正则表达式模式以更好,更简洁地检查这些短语的联合出现?

时间:2014-07-09 15:07:42

标签: python regex

pat = str('(?=.*University)(?=.*Business)|(?=.*School)(?=.*Business)|'
'(?=.*University)(?=.*Management)|(?=.*School)(?=.*Management)')

这将与纽约大学商学院相匹配;约翰逊管理学院。大学/学校和管理或大学/学校和管理层都必须在那里。

更好的解决方案不一定是正则表达式模式。例如,如果有办法使用in执行此操作,我会非常感激。

1 个答案:

答案 0 :(得分:2)

您可以将替换(…|…)置于前瞻((?=…))内,如下所示:

(?=.*(University|School))(?=.*(Business|Management))

此模式将匹配包含UniversitySchool以及BusinessManagement的任何字符串。

当然,这不一定要使用正则表达式。你可以这样做:

if ("University" in string or "School" in string) and ("Business" in string or "Management" in string):
    ...