我正在使用正则表达式来提取大学名称.主要观察到两种模式.
为此,我写了两个模式,
regex = re.compile('|'.join([r'[Uu]niversity of (\w+){1,3}',r'(?:\S+\s){1,3}\S*[uU]niversity']))
Run Code Online (Sandbox Code Playgroud)
但在少数情况下,我没有得到适当的预期答案.例如,
sentence = "Biology Department University of Vienna"
Run Code Online (Sandbox Code Playgroud)
对于这句话,我正在使用正则表达式
"Biology Department University"
Run Code Online (Sandbox Code Playgroud)
这是错的.我觉得,由于两个模式都匹配,第二个模式匹配并提取短语.
我需要优先考虑第一种模式,以便在类似的场景中提取"某事物的大学".
任何人都可以帮忙
通常,正则表达式中的替换从左到右进行计算,因此首先检查最左边的替换,给予它们优先级.但是你已经这样做了 - 你仍然从交替的右侧得到匹配的原因是在字符串中可以提前匹配.
因此,您需要更具体,"Foo University"只有在不of遵循时才允许匹配.您可以使用负前瞻断言:
regex = re.compile('|'.join([r'university of (\w+){1,3}',
r'(?:\S+\s){1,3}\S*university(?!\s+of\b)']),
flags=re.I)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4818 次 |
| 最近记录: |