gpt4 book ai didi

python - 如何在 python 中使用正则表达式忽略以特定模式开头的字符串?

转载 作者:行者123 更新时间:2023-12-04 07:30:58 24 4
gpt4 key购买 nike

接受并返回@something 但拒绝 first@last。

r'@([A-Z][A-Z0-9_]*[A-Z0-9])

上面的正则表达式将接受@something(以字母开头,以字母或数字结尾,中间可以有下划线,至少2个字符长)并返回@之后的部分。符号。

我不想返回包含一些字母或数字的字符串 A-Z0-9@ 之前符号。

@ 之前的空格、换行符、特殊字符等是允许的。

代码:

re.findall(r'@([A-Z][A-Z0-9_]*[A-Z0-9])', text, re.I)

最佳答案

使用

re.findall(r'(?<![A-Z0-9])@([A-Z][A-Z0-9_]*[A-Z0-9])', text, re.I)

参见 regex proof .

解释

--------------------------------------------------------------------------------
(?<! look behind to see if there is not:
--------------------------------------------------------------------------------
[A-Z0-9] any character of: 'A' to 'Z', '0' to '9'
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
@ '@'
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
[A-Z] any character of: 'A' to 'Z'
--------------------------------------------------------------------------------
[A-Z0-9_]* any character of: 'A' to 'Z', '0' to
'9', '_' (0 or more times (matching the
most amount possible))
--------------------------------------------------------------------------------
[A-Z0-9] any character of: 'A' to 'Z', '0' to '9'
--------------------------------------------------------------------------------
) end of \1

关于python - 如何在 python 中使用正则表达式忽略以特定模式开头的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67929012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com