首页 > 解决方案 > 如何将 Python 中的正则表达式匹配到某个字符,如果不匹配则返回 None?

问题描述

我想知道是否可以匹配正则表达式直到特定字符(':'),但避免像 [^:]* 这样的负逻辑表达式,因为如果遇到不匹配,我希望它返回 None 。查看预期的示例:

import re
string='AbcS:sdaf'
pattern='whatever needed' # match all up to : 
re.search(pattern, string).group()

'AbcS'

string2='AbcSsdaf'
pattern2='whatever needed' # match all up to : 
re.search(pattern2, string2).group()

None

在其他帖子中,我看到了一些答案 mencioning pattern='[^:]*' 但这不是我想要的,因为如果字符串中没有 ':' 则返回所有字符串。

谢谢你们

标签: pythonregexpython-3.x

解决方案


试试这个正则表达式:

^(?=.*:)[^:]*

点击演示

解释:

  • ^- 断言字符串的开头
  • (?=.*:)- 积极的前瞻,以确保该行包含一个:
  • [^:]*- 匹配 0+ 次出现的任何不是:

推荐阅读