首页 > 解决方案 > 为什么正则表达式 '.+\s.+\n' 没有得到预期的字符串列表?

问题描述

正则表达式 '.+\s.+\n' 匹配 'China Beijing\nUS Washington\n' 没有得到预期的字符串列表

用正则表达式匹配字符串

import re
a = re.compile(r'.+\s.+\n')
str1 = 'China Beijing\nUS Washington\n'
b = a.findall(str1)
print(b)

我想输出['China Beijing\n', 'US Washington\n'],但是实际输出的是['China Beijing\nUS Washington\n'],但是当我匹配到'. . \n',我得到了 ['China Beijing\n', 'US Washington\n']。为什么?提前致谢

标签: pythonregex

解决方案


您可以使用非贪婪运算符:.*?

import re
a = re.compile(r'.*?\s.*?\n')
str1 = 'China Beijing\nUS Washington\n'
b = a.findall(str1)
print(b)

\w或者使用或[A-z]+代替的更具选择性的模式.

import re
a = re.compile(r'\w+\s\w+\n')
str1 = 'China Beijing\nUS Washington\n'
b = a.findall(str1)
print(b)

推荐阅读