有没有办法在Python中检索正则表达式中的模式?例如:
strA =' \ ta - b'
我想找回一个'和' b'变成不同的变量
答案 0 :(得分:1)
听起来你在谈论saving/capturing groups:
>>> import re
>>> pattern = r"\t(\w+) -- (\w+)"
>>> s = ' test1 -- test2'
>>> a, b = re.search(pattern, s).groups()
>>> a
'test1'
>>> b
'test2'
答案 1 :(得分:0)
您无法检索模式,您可以匹配或检索与您的模式匹配的捕获组内容。
按照你的例子:
\ta -- b
如果要检索内容,可以使用括号来捕获组,例如:
\t(a) -- (b)
正则表达式的解释是:
\t '\t' (tab)
( group and capture to \1:
a 'a'
) end of \1
-- ' -- '
( group and capture to \2:
b 'b'
) end of \2
然后,您可以通过访问类似\1
(或$1
)和群组\2
(或$2
)之类的索引来获取群组内容。但是你要抓住匹配的内容,而不是模式本身。
所以,如果你有:
\t(\w) -- (\d)
您可以获取与该模式匹配的内容:
\t '\t' (tab)
( group and capture to \1:
\w word characters (a-z, A-Z, 0-9, _)
) end of \1
-- ' -- '
( group and capture to \2:
\d digits (0-9)
) end of \2
但您无法自行检索\w
或\d
。
如果你想获得这个模式:
\t\w -- \d
你应该在--
之上拆分字符串,你会得到字符串::
"\t\w "
" \d"