检索变量Regex Python

时间:2014-08-27 21:34:38

标签: python regex

有没有办法在Python中检索正则表达式中的模式?例如:

strA =' \ ta - b'

我想找回一个'和' b'变成不同的变量

2 个答案:

答案 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)

Regular expression visualization

正则表达式的解释是:

\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)

Regular expression visualization

您可以获取与该模式匹配的内容:

\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"