我有一个大文档,其中包含以特定模式出现的项目: "我需要的文本" ","(逗号结束文本我要返回( "更多我不需要的文字" "."我需要的文本"(需要紧跟在句点后面的文本( ","(逗号结束文本(。等等。
我希望编写一个脚本,该脚本将通过文档并拉出(我需要的文本(。
我没怎么尝试过。我尝试过使用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。它还解释了它发现了什么以及为什么找到它。