[英]Pattern extract using Regex in Python
我正在尝试在 python 中使用正则表达式进行单词提取,因为我是初学者并且没有正则表达式经验我希望你帮助我,我有这个字符串:
Deadline for NSF-BSF programs in Elementary Particle Physics – Theory; Particle Astrophysics and Cosmology – Theory; Quantum Information Science (NSF deadline is Dec. 14)
我希望 output 成为这个词中的区域或研究列表,所以 output 应该是:
[Elementary Particle Physics, Particle Astrophysics and Cosmology, Quantum Information Science]
任何人都可以使用re.findall()
给出正则表达式来识别这种模式。 提前致谢!
您必须考虑弄清楚是什么连接了您要搜索的元素。 正则表达式依赖于模式识别。 常规意义
- 排列成或构成恒定或确定的模式,尤其是在各个实例之间具有相同的空间。
- 以均匀的间隔重复出现。
鉴于此,您的问题不容易解决,因为您的来源不是“常规”
也就是说,在一种情况下,您正在寻找任何以'- Theory;'
结尾的东西。 然而,“任何东西”过于宽泛。 您如何区分匹配"Deadline for NSF-BSF programs in Elementary Particle Physics – Theory;"
以及您要查找的匹配项是Elementary Particle Physics
您的结果不符合统一的模式,例如, Elementary Particle Physics
是三个单词,而Particle Astrophysics and Cosmology
是 4 个单词。
鉴于缺乏constant or definite pattern
,我不知道这是正则表达式真正可以帮助您的东西。
当然假设(1) ' in '
是您感兴趣的单词正在开始的指示符,并且(2)所有区域都用';'
分隔并且 (3) 所有区域都以- Theory
或括号中的内容结尾,我们可以获得您要查找的列表。 但是,如果预期以下代码有效,这些假设必须在所有输入源中保持一致。
import re
src = "Deadline for NSF-BSF programs in Elementary Particle Physics - Theory; " \
"Particle Astrophysics and Cosmology - Theory; " \
"Quantum Information Science (NSF deadline is Dec. 14)"
_, out = src.split(' in ')
out = [re.split(r'( - Theory)|\(.*\)', o)[0].strip() for o in out.split(';')]
print(out)
正则表达式很棒……有时解释一些正则表达式的优点和缺点。 此答案的摘录何时不应使用正则表达式? , 强调解析人类写作通常不是正则表达式的好用法。
一个很好的例子是淫秽过滤器。 不仅一般来说实现它是一个坏主意,而且您可能很想使用正则表达式来实现它,而且您会做错。 一个人可以用很多方法写一个单词、一个数字、一个句子,并且会被另一个人理解,但不是你的正则表达式。 因此,您的正则表达式不会抓住真正的淫秽内容,而是会花时间伤害其他用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.