[英]Regex to match a list of key words
我有一个单词列表,这些单词可以标识文档的特定部分。 关键字的使用方式可能有所不同。 但是这些关键字与文档文本融合在一起,我只知道这是一种基本的方法。
一些示例关键词将是评估,计划,家族史,当前药物,程序,过敏等,等等。
一些示例文本在这里:
Family History
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Social History
· No alcohol use
Current Meds
Allergies
· No Known Drug Allergies
Vitals
Vital Signs [Data Includes: Current Encounter]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Height Tall
Weight Well Built
Physical Exam
Lorem Ipsum is simply dummy text of the printing and typesetting industry
Lorem Ipsum has been the industry's standard dummy text ever since the
1500s, when an unknown printer took a galley of type and scrambled it to
Assessment
History of Medication
None
Plan
It is a long established fact that a reader will be distracted by
readable content of a page when looking at its layout. The point of using
Lorem Ipsum is that it has a more-or-less normal distribution of letters,
这是我到目前为止的工作
'.*\bPlan\b|.*\bHistory\b|.*\bMeds\b'
是否有更好的方法在Python中使用Regex查找术语列表(不区分大小写)?
你所拥有的应该等同于
.*\b(Plan|History|Meds)\b
开头有.*
是多余的,只需使用search
而不是match
来表示可以在任何地方找到正则表达式。
但是,您可能真正想要的是确保这些单词是该行中第一个出现的“真实”事物,因此我建议:
\s*(Plan|...
说只有空格应该出现在开头,或者
\W*(Plan|...
如果您需要更大的灵活性,例如,要点( \\W
表示不是文字字符)。
更新评论中的其他问题:
这是一个正则表达式的示例,该正则表达式最多只能匹配4个单词:
^(\W*\w+\W*){0,4}\W*$
测试:
for i in range(1, 6):
print bool(re.match(r"^(\W*\w+\W*){0,4}\W*$", "abc " * i))
打印4个True
和一个False
。
我试图用单词边界做到这一点,但放弃了。 老实说,您最好使用更简单的正则表达式来计算单词的数量。 除非使用正则表达式,否则不要使用正则表达式:通常,代码功能更强大,而且通常更容易使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.