我想知道是否可以匹配正则表达式直到特定字符(':'),但避免像 [^:]* 这样的负逻辑表达式,因为如果遇到不匹配,我希望它返回 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
在其他帖子中,我看到一些答案提到pattern='[^:]*',但这不是我想要的,因为如果字符串中没有“:”,则返回所有字符串。
谢谢大家
最佳答案
尝试这个正则表达式:
^(?=.*:)[^:]*
<强> Click for Demo
说明:
^
- 断言字符串的开头(?=.*:)
- 正向前视以确保该行包含:
[^:]*
- 匹配 0 次以上出现的非:
的任何字符
关于python - 如何在Python中将正则表达式匹配到某个字符,如果不匹配则返回None?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626569/