我是正则表达式的新手,我需要从文本文件中读取并在特定单词+字符后面找到一个单词。例如,文本文件的内容是:
天气现象:温和阳光34 明天天气:多云
我想在从文档doc中搜索关键字"Mildly-sunny34"
后提取"Weather now"
。我想确保除了":"
这个词之外我还没有" "
或"Mildly-sunny34"
个空格。
非常感谢任何有关解释的帮助。谢谢!
答案 0 :(得分:3)
这样做:
import re
# Open the file for reading
with open('file.txt') as fd:
# Iterate over the lines
for line in fd:
# Capture one-or-more characters of non-whitespace after the initial match
match = re.search(r'Weather now : (\S+)', line)
# Did we find a match?
if match:
# Yes, process it
weather = match.group(1)
print('weather: {}'.format(weather))
由于您捕获的内容是由空格分隔的非空白,因此您只需使用\S+
。
\S
是非空格 - 与\s
相反,是空白+
表示前一个字符或字符类中的一个或多个对于捕获组,组0对应于整个正则表达式,捕获的子组按顺序索引。由于我们只有一个子组,因此我们需要组1。
运行上述内容:
$ python extract.py
weather: Mildly-sunny34