我正在以这种格式的字符串提取数字。
- AB1234
- AC1234
- ad1234
如您所见,A
始终存在,第二个字符不包括"
。我写下以下代码以提取数字。
re.search(r'(?<=A[^"])d*',input)
但是我遇到了一个错误。
look-behind需要固定宽度模式
那么有什么方便的方法来提取数字吗?现在我知道如何搜索两次以获取它们。谢谢。
注意a是一种模式,实际上A是一个长字符串中的世界。
您的示例中的正则表达式工作,因此我猜想您的实际模式具有可变的宽度字符匹配(*
,+
等)。不幸的是,正则看来不支持那些。我可以建议的替代方法是使用捕获组并提取匹配的字符串 -
m = re.search(r'AD+(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)