我正在以这种格式字符串提取数字。
如您所见,A
始终存在,第二个字符排除"
。我在下面写下代码来提取数字。
re.search(r'(?<=A[^"])\d*',input)
但我遇到了错误。
后视需要固定宽度模式
有没有方便的方法来提取数字?现在我知道如何搜索两次以获得它们。谢谢。
注意A是一种模式,实际上A是长字符串中的世界。
答案 0 :(得分:3)
您示例中的正则表达式有效,因此我猜测您的实际模式具有可变宽度字符匹配(*
,+
等)。不幸的是,正则表达式看起来不支持那些。我可以建议作为替代方案,使用捕获组并提取匹配的字符串 -
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+)'
答案 1 :(得分:0)
使用此正则表达式代替:
re.search(r'(?=A[^"]\d*)\d*',input)