当前位置: 首页 > 面试题库 >

提取整个单词

鄢修德
2023-03-14
问题内容

我有大量的实际文本,需要将单词拉出来以输入到拼写检查器中。我想尽可能多 提取 有意义的
单词,而不会产生太大干扰。我知道这附近有很多正则表达式忍者,所以希望有人可以帮助我。

目前,我正在使用提取所有字母序列'[a-z]+'。这是一个很好的近似值,但是它却拖走了很多垃圾。

理想情况下, 我想要一些正则表达式(不一定漂亮或高效),该正则表达式提取由自然词分隔符(例如,[/-_,.: ]等等)定界的所有字母序列,并忽略任何带有非法边界的字母序列。

但是,我也很高兴能够获得不与数字相邻的所有字母序列。因此,例如'pie21'将不会提取'pie',但'http://foo.com'会提取['http', 'foo', 'com']

我尝试了lookaheadlookbehind断言,但是它们是按字符应用的(例如re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21')'pi'当我希望它不返回任何内容时将返回)。我尝试将alpha部分包装为术语((?:[a-z]+)),但没有帮助。

更多细节:
数据是一个电子邮件数据库,所以它主要是用正常的数字简单的英语,但偶尔也有垃圾串像GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEAAC7A21C0我想完全忽略。我假设其中带有数字的任何字母顺序都是垃圾。


问题答案:

如果将自己限制为ASCII字母,则使用(re.I设置了选项)

\b[a-z]+\b

\b是单词边界锚点,仅在字母数字“单词”的开头和结尾匹配。如此\b[a-z]+\b匹配pie,但不是pie2121pie

要也允许其他非ASCII字母,可以使用如下所示的内容:

\b[^\W\d_]+\b

这也允许带重音符号的字符。您可能需要设置该re.UNICODE选项,尤其是在使用Python 2时,以允许\w速记匹配非ASCII字母。

[^\W\d_] 否定的字符类允许除数字和下划线外的任何字母数字字符。



 类似资料:
  • 在我的数据框架中,有一列名为“teams”。它包括城市和球队名称。我想把这个城市拉进另一个纵队。这是数据帧:数据帧示例 我可以使用正则表达式轻松提取列: 然而,在“名称”栏中,对于纽约尼克斯队,它只给了我“New”的值,我想得到“New York”: 结果 那么,我该怎么做呢?如果单元格有2个单词,我该如何从开头只提取一个单词?如果单元格有3个单词,我该如何使用正则表达式从中提取2个单词?

  • 我必须提取两个值(最小

  • null 如何在employee实体中只取Dept.name列而不是整个Department行(需要避免对Department进行的大量集合进行急切的取数)?如果是,我应该使用什么注释? 如何在此方案中处理级联?

  • 问题内容: 我正在尝试创建一个将信息存储在组件的状态变量中的输入表单,然后在屏幕上输出该变量。我阅读了有关受控组件的文档,这就是我在这里尝试的内容。 我的主要问题是,当我单击提交时,正确的文本出现在屏幕上,但是随后整个页面都会刷新,我不确定为什么。从我在网上阅读的内容看,这似乎是一个解决方案,但我的理解是,我可以使用该组件或受控组件。 问题答案: 只需调用方法即可防止表单的默认行为

  • 本文向大家介绍grep 匹配整个单词,包括了grep 匹配整个单词的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个文件sample: grep“ hello”的法线返回: 使用-w允许选择包含构成整个单词的匹配项的行:            

  • 我正在制作一个小型java swing应用程序,我必须在ScrollPane中创建一个带有gridBagLayout的表。 首先,GridBagLayout没有在面板的顶部对齐。 第二,如果我将(1,2,3,4)单元格居中,则它们居中在面板的中间(而不是单元格的中间)。 这是我的代码: