首页 > 解决方案 > python正则表达式返回空字符串

问题描述

鉴于:

lst = ['(abc): my name is ?123']

我试图从':'返回所有内容,直到 lst[0] 结束,为此我尝试了一个正则表达式:

    result = re.search(r': (.*?)', lst[0]).group(1)

它返回一个空字符串。如何正确使用正则表达式来做到这一点?预期输出:

'my name is ?123'

使用的资源:Regex wiki

标签: python

解决方案


问题是你把你的.* 懒惰放在?最后。Lazy 意味着尽可能少地匹配,以获得有效匹配。在这种情况下,由于您的模式在 之外没有任何可匹配的内容(.*?),因此正则表达式引擎正在匹配空字符串。只需使用(.*)非惰性版本,它就会起作用。

lst = ['(abc): my name is ?123']
result = re.search(r': (.*)', lst[0]).group(1)
print(result)

这打印:

my name is ?123

推荐阅读