python - 如何在Python中将正则表达式匹配到某个字符,如果不匹配则返回None?

标签 python regex python-3.x

我想知道是否可以匹配正则表达式直到特定字符(':'),但避免像 [^:]* 这样的负逻辑表达式,因为如果遇到不匹配,我希望它返回 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/

相关文章:

python - 我可以让相同值的不同变量指向不同的对象吗?

python - 使用 BeautifulSoup 提取 <Div class> 标记之间存在的值

python - 按列迭代 3D 列表

在 Linux EC2 实例中使用 sudo pip3 install python-binance 时 python-binance 无法编译错误

python-3.x - 加速 Pandas 迭代

python - Pandas:通过在现有列之间进行线性插值来创建新列

python - 如何将根目录的所有内容分发到具有该名称的目录

javascript - 我可以在 Meteor 查找函数中使用用户定义的正则表达式而不转义特殊字符吗?

Java正则表达式字符串匹配

javascript - 将多个代码块合并在一起