python - 为什么正则表达式 '.+\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']。为什么?提前致谢
解决方案
您可以使用非贪婪运算符:.*?
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)
推荐阅读
- android - 如何在 for 循环中打印 i 和 i+1?
- c# - 如何读取任何旧字符串并将其写入任何旧配置文件?
- django - 将 Numpy 数组图像传递给 ImageField()
- javascript - 使用递归函数反转数组 - .shift() 问题
- html - 如何在 Wordpress Amadeus 主题中使超链接具有不同的颜色?
- c# - 如何在 wpf 中制作动态滑块?
- sql - SQL Server 2012 使用纪元时间分析上个月的数据
- php - 更改用户可以更改的数组
- python - 如何对我的 numpy 数组 (3000,3) 和 (3,2,3000) 使用广播
- java - 如何使用 android webview 发送 POST 数据以登录网站?