2023-06-03 20:30:10 发布
网友
我正在提取这种格式字符串中的数字
如您所见,A始终存在,第二个字符排除了"。我写下面的代码来提取数字
A
"
re.search(r'(?<=A[^"])\d*',input)
但我遇到了一个错误
look-behind requires fixed-width pattern
那么有什么方便的方法提取数字吗?现在我知道如何搜索两次才能得到它们。提前谢谢
注A是一个模式,实际上A是一个长串中的世界。
使用此正则表达式:
re.search(r'(?=A[^"]\d*)\d*',input)
您的示例中的regex是有效的,所以我猜您的实际模式具有可变宽度的字符匹配(*,+,等等)。不幸的是,regex look behinds不支持这些。我的另一个建议是,使用一个捕获组并提取匹配的字符串-
*
+
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+)'
使用此正则表达式:
您的示例中的regex是有效的,所以我猜您的实际模式具有可变宽度的字符匹配(
*
,+
,等等)。不幸的是,regex look behinds不支持这些。我的另一个建议是,使用一个捕获组并提取匹配的字符串-细节
如果要处理双引号,可以通过包含字符类对正则表达式稍加修改-
相关问题 更多 >
编程相关推荐