正则表达式匹配第一个和最后一个单词或任何单词

2024-09-26 22:09:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的文件,上面有一个数据列表:

 #fabulous       7.526   2301    2
 #excellent      7.247   2612    3
 #superb 7.199   1660    2
 #perfection     7.099   3004    4
 #terrific       6.922   629     1

我有一个文件,里面有这样的句子:

^{pr2}$

我想用regex检查以下内容:

  1. 如果每个句子中的第一个单词与文件中的任何单词匹配 例如,如果太棒了,它的,伊朗语,with是否出现在文件中

  2. 如果句子中的最后一个单词与文件中的任何单词匹配 例如,如果星期六,难以置信,导弹,波兰出现在文件中或不

  3. 如果句子中单个单词的2个或3个字符的前缀和后缀与文件中的2个或3个字符的前缀和后缀匹配 或者,如果Ira和3的前缀不匹配。后缀也是一样。

我对regex太陌生了,我可以这样想,但没有得到结果: term2.lower()是文件中的第一列

    wordanalysis["trail"] = found if re.match(sentence[-1],term2.lower()) else not(found)
    wordanalysis["lead"] = found  if re.match(sentence[0],term2.lower()) else not(found)

Tags: 文件reifmatch单词lower后缀else
1条回答
网友
1楼 · 发布于 2024-09-26 22:09:45

更新:根据@justhalf的建议,不需要使用regex来拆分单词。如果需要区分大小写的匹配,请删除.lower()。在

这将匹配数据列表中的第一个单词和最后一个单词(不包括任何标点符号或尾随空格):

(^\s?\w+\b|(\b\w+)[\.?!\s]*$)

匹配:

MATCH 1-1. Terrific
MATCH 2-1. Saturday.
        2. Saturday
MATCH 3-1. its
MATCH 4-1. fabulous
        2. fabulous
MATCH 5-1. Iranian
MATCH 6-1. missiles 
        2. missiles
MATCH 7-1. with
MATCH 8-1. Poland. 
        2. Poland

实施:

^{pr2}$

这可能不是最优雅的方式,但你明白了。在

代码经过测试并正常工作,输出为:

Found Terrific in data.txt
Found fabulous in data.txt

同时这并不能满足您的第三个标准,请测试一下,看看它是否对您有效。在

相关问题 更多 >

    热门问题