如何编写脚本以迭代方式搜索文档并根据模式返回结果



我有一个大文档,其中包含以特定模式出现的项目: "我需要的文本" ","(逗号结束文本我要返回( "更多我不需要的文字" "."我需要的文本"(需要紧跟在句点后面的文本( ","(逗号结束文本(。等等。

我希望编写一个脚本,该脚本将通过文档并拉出(我需要的文本(。

我没怎么尝试过。我尝试过使用re.compile,但我主要是初学者。

文档示例: 苹果很有趣,橙子更好。 橙子很有趣,香蕉更好。 香蕉很奇怪,香蕉有点奇怪。

我想回来: 苹果很有趣 橙子很有趣 香蕉很奇怪

如果你只需要大写的ASCII字母,它看起来像这样:

[A-Z]+
  • 方括号定义要匹配的事物的集合
  • 连字符定义一个范围,在本例中为从大写 A 到大写 Z
  • 加号表示此范围内至少有一个字符,但如果它们彼此相邻,则可能更多

例:

http://regexr.com/4n1s1

import re
pattern = re.compile('[A-Z]+')
matches = pattern.findall('APPLES ARE FUN, oranges are better. ORANGES ARE FUN, bananas are better')
print(matches)
# ['APPLES', 'ARE', 'FUN', 'ORANGES', 'ARE', 'FUN']

提取','之前和前面有begin of text(^)'.'的文本:

import re
text = """APPLES ARE FUN, oranges are better. ORANGES ARE FUN, bananas are better. BANANAS ARE WEIRD, bananas are a little weird"""
print(re.findall('(?:^|.s+)([ws]+)(?=,)', text))
# ['APPLES ARE FUN', 'ORANGES ARE FUN', 'BANANAS ARE WEIRD']

根据您的模式,您可以使用如下内容:

from re import findall as regexSearch
with open("./myFileName.txt", "r") as myFile:
content = myFile.read()
pattern = r"[A-Z ]{2,}"
matches = regexSearch(pattern, content)
for match in matches:
print(match)

测试模式的一个很好的工具是 regex101.com。它还解释了它发现了什么以及为什么找到它。

最新更新