繁体   English   中英

在 Python 中使用正则表达式提取模式

[英]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()给出正则表达式来识别这种模式。 提前致谢!

您必须考虑弄清楚是什么连接了您要搜索的元素。 正则表达式依赖于模式识别。 常规意义

  1. 排列成或构成恒定或确定的模式,尤其是在各个实例之间具有相同的空间。
  2. 以均匀的间隔重复出现。

鉴于此,您的问题不容易解决,因为您的来源不是“常规”

也就是说,在一种情况下,您正在寻找任何以'- 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM