我有一个样本字符串 <alpha.Customer[cus_Y4o9qMEZAugtnW] active_card=<alpha.AlphaObject[card] ...>, created=1324336085, description='Customer for My Test App', livemode=False>
<alpha.Customer[cus_Y4o9qMEZAugtnW] active_card=<alpha.AlphaObject[card] ...>, created=1324336085, description='Customer for My Test App', livemode=False>
我只想要该值cus_Y4o9qMEZAugtnW而不是card(在另一个内部[])
cus_Y4o9qMEZAugtnW
card
[]
如何在Python中以最简单的方式做到这一点?也许通过使用RegEx(我不擅长)?
怎么样:
import re s = "alpha.Customer[cus_Y4o9qMEZAugtnW] ..." m = re.search(r"\[([A-Za-z0-9_]+)\]", s) print m.group(1)
对我来说,这打印:
请注意,调用会re.search(...)找到与正则表达式的第一个匹配项,因此[card]除非您再次重复搜索,否则它将不会找到。
re.search(...)
[card]
编辑: 这里的正则表达式是python原始字符串文字,基本上意味着反斜杠不会被视为特殊字符,而是会原样传递给re.search()方法。正则表达式的部分包括:
re.search()
\[
[
(
[A-Za-z0-9_]
+
)
\]
]
编辑: 正如DK所指出的,正则表达式可以简化为:
m = re.search(r"\[(\w+)\]", s)
由于\w表示特殊的顺序,与[a-zA-Z0-9_]取决于re.LOCALE和re.UNICODE设置的含义相同。
\w
[a-zA-Z0-9_]
re.LOCALE
re.UNICODE