通过查看后面的Python正则表达式编号
我正在提取这种格式字符串中的数字通过查看后面的Python正则表达式编号,python,regex,Python,Regex,我正在提取这种格式字符串中的数字 AB1234 AC1234 公元1234年 正如您所看到的,A始终存在,第二个字符排除了“。我在下面写代码来提取数字 re.search(r'(?<=A[^"])\d*',input) re.search(r'(?您的示例中的正则表达式有效,因此我猜您的实际模式具有可变宽度的字符匹配(*,+,等等)。不幸的是,正则表达式看起来落后,不支持这些。作为替代方法,我可以建议使用捕获组并提取匹配字符串- m = re.search(r'A\D+(\d+)',
- AB1234
- AC1234
- 公元1234年
A
始终存在,第二个字符排除了“
。我在下面写代码来提取数字
re.search(r'(?<=A[^"])\d*',input)
re.search(r'(?您的示例中的正则表达式有效,因此我猜您的实际模式具有可变宽度的字符匹配(*
,+
,等等)。不幸的是,正则表达式看起来落后,不支持这些。作为替代方法,我可以建议使用捕获组并提取匹配字符串-
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+)'
Tye改为使用此正则表达式:
re.search(r'(?=A[^"]\d*)\d*',input)
呃,这样行。检查你的实际代码。无论如何,为什么不使用捕获组?r'a\D+(\D+)
@cᴏʟᴅsᴘᴇᴇᴅ 你能为r'A\D+(\D+)发布你的答案吗?或者:re.search(r'A[^”](\D*),input.group(1)