我正在以这种格式字符串提取数字。
- AB1234
- AC1234
- AD1234
如您所见,A
始终存在,第二个字符不包括 "
。我编写下面的代码来提取数字。
re.search(r'(?<=A[^"])\d*',input)
但是我遇到了错误。
look-behind requires fixed-width pattern
那么有没有什么方便的方法来提取数字呢?现在我知道如何搜索两次才能获得它们。提前致谢。
注A是一个模式,实际上A是一个长字符串中的世界。
最佳答案
您的示例中的正则表达式有效,因此我猜测您的实际模式具有可变宽度字符匹配(*
、+
等)。不幸的是,正则表达式查找不支持这些。我可以建议的替代方案是使用捕获组并提取匹配的字符串 -
m = re.search(r'A\D+(\d+)', s)
if m:
r = m.group(1)
详细信息
A # your word
\D+ # anything that is not a digit
( # capture group
\d+ # 1 or more digits
)
<小时/>
如果您想处理双引号,可以通过包含字符类对正则表达式进行轻微修改 -
r'A[^\d"]+(\d+)'
关于Python正则表达式通过查看后面的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47826190/