使用Python正则表达式查找以特定字母开头和结尾的单词
我不使用或不做太多文本搜索,但无法找到一个答案,即正则表达式是如何从一个文本文件中查找以t开头、以t结尾的所有单词,其中每个单词都位于换行符上。从搜索中尝试了一些建议;下面查找以T开头的所有单词,以及下一个出现T的位置。然而,我想找出最后一个字母是T的位置,不管这两个字母之间出现了多少个T。道歉,如果这实际上是微不足道的,但在每次组合后,我可以发现我没有结果。我不确定为什么使用Python正则表达式查找以特定字母开头和结尾的单词,python,regex,Python,Regex,我不使用或不做太多文本搜索,但无法找到一个答案,即正则表达式是如何从一个文本文件中查找以t开头、以t结尾的所有单词,其中每个单词都位于换行符上。从搜索中尝试了一些建议;下面查找以T开头的所有单词,以及下一个出现T的位置。然而,我想找出最后一个字母是T的位置,不管这两个字母之间出现了多少个T。道歉,如果这实际上是微不足道的,但在每次组合后,我可以发现我没有结果。我不确定为什么r'^T.*T$'不起作用 with open('/Users/../words.txt') as f: passa
r'^T.*T$'
不起作用
with open('/Users/../words.txt') as f:
passage = f.read()
words = re.findall(r'T.+T', passage)
print(words)
使用单词边界锚定符
\b
和非空白字符\S
:
words = re.findall(r'\bT\S+T\b', passage)
这也将允许匹配诸如
信任测试
、艰难和快速
等词。我将使用该表达式:
re.findall(r"\bT\w*?T\b",s))
- 使用单词边界
- 使用任意数量的
以避免两者之间的空格匹配\w
- 使用“非贪婪”模式(这里可能没有那么有用,因为word boundary已经完成了这项工作)
words=re.findall(r'(?m)^T.+T$',passage)
-使用^
和$
使它们与(?m)
修饰符匹配。@WiktorStribiż谢谢你告诉我如何解决我所理解的问题,我不明白为什么对合法的问题会投反对票。Grrr.谢谢--\bT.*T\b似乎也有效。谢谢你的回答;我怀疑^…$combo在返回行时出错,如注释中所述。否,*
将跳过任何非单词字符。如果每行只有一个单词,这似乎是可行的,但发布的解决方案更为通用。