python正则表达式-在文件中搜索模式

python正则表达式-在文件中搜索模式,python,regex,Python,Regex,编写一个程序,只输出/usr/share/dict/words中以字母“ply”开头的单词。它应该按顺序输出单词,每个单词在自己的行上 我做错了什么?如果不考虑这种情况,可以使用以下正则表达式: (?i)\bply[^\s]* 它在我的distro dict Word文件中提供以下输出: Plymouth Plymouth's ply ply's plying plywood plywood's ply ply's plying plywood plywood's 如果情况重要,则使用:

编写一个程序,只输出
/usr/share/dict/words
中以字母“ply”开头的单词。它应该按顺序输出单词,每个单词在自己的行上


我做错了什么?

如果不考虑这种情况,可以使用以下正则表达式:

(?i)\bply[^\s]*
它在我的distro dict Word文件中提供以下输出:

Plymouth
Plymouth's
ply
ply's
plying
plywood
plywood's
ply
ply's
plying
plywood
plywood's
如果情况重要,则使用:

\bply[^\s]*
它在我的distro dict Word文件中提供以下输出:

Plymouth
Plymouth's
ply
ply's
plying
plywood
plywood's
ply
ply's
plying
plywood
plywood's
发行版:

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial
在您的系统上,结果可能不同

您可以在
Python
代码中添加此正则表达式,以获得以下工作示例:

$ more plywords.py
import re

#open the file with its full path and in read-only mode
with open('/usr/share/dict/words', 'r') as file:
  pattern = re.compile(r'(?i)\bply[^\s]*') #define the regex that you are going to use to analyse the text
  #for each line of your file, you fetch all the matches and loop on them via the inner loop; for each match found you print it.
  for line in file:
        for m in pattern.findall(line):
                print(m)
并运行它:

$ python plywords.py 
Plymouth
Plymouth's
ply
ply's
plying
plywood
plywood's
match()。假设Word文件与代码位于同一文件夹中,下面的代码应该可以工作

import re

pattern = re.compile(r'ply.*')
with open('words.txt', 'r') as lines:
    for line in lines:
        if pattern.match(line):
            print(line)

^
是字符串的开头,而不是单词的开头。请尝试
\bply.*?\b
@Sweeper,因为输入是
/usr/share/dict/words
,每行有一个单词,这实际上不是问题。此代码有很多错误。(1) 您可以在当前目录中打开
words.txt
,而不是
/usr/share/dict/words
。(2) 您试图在文件对象上运行模式。(3) 您使用的是
match
而不是
finditer
findall
。如果您在words:
中有一行
,并且匹配了每一行
,这就行了,但您没有这样做。(4) 
对于匹配中的匹配:
语法无效;你不能那样把
这个词扔进去。(5) 
match
返回一个match对象,这不是可以循环使用的对象。(6) 您尚未尝试处理匹配失败的情况。对新来者的建议:如果答案解决了您的问题,请单击大复选标记接受答案(✓) 在它旁边,也可以选择向上投票(向上投票要求至少15个信誉点)。如果您发现其他答案有帮助,请向上投票。接受和向上投票有助于未来的读者。请参阅[相关帮助中心文章][1][1]:在OP的现有代码中更改正则表达式并不能解决任何问题。同时,更改它是不相关的。@abarnert:我编辑了我的帖子并添加了一个工作示例!关于正则表达式,唯一的问题可能是这种情况,这仍然不是一个非常有用的答案。你无缘无故地替换了OP的工作正则表达式,然后又替换了它他用完全不同的代码破坏了代码,却没有解释你改变了什么。这对任何人有什么帮助,除非他们的目标是在不理解的情况下交作业?