如何在python中将正则表达式匹配的一部分作为变量?

Luc*_*cas 17 python regex perl

在Perl中可以做这样的事情(我希望语法是正确的......):

$string =~ m/lalala(I want this part)lalala/;
$whatIWant = $1;
Run Code Online (Sandbox Code Playgroud)

我想在Python中做同样的事情,并在括号内获取文本,如$ 1.

Nad*_*mli 26

如果您想按名称获取零件,您也可以这样做:

>>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcom Reynolds")
>>> m.groupdict()
{'first_name': 'Malcom', 'last_name': 'Reynolds'}
Run Code Online (Sandbox Code Playgroud)

该示例来自re docs


mik*_*iku 19

请参阅:Python正则表达式匹配对象

>>> import re
>>> p = re.compile("lalala(I want this part)lalala")
>>> p.match("lalalaI want this partlalala").group(1)
'I want this part'
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 17

import re
astr = 'lalalabeeplalala'
match = re.search('lalala(.*)lalala', astr)
whatIWant = match.group(1) if match else None
print(whatIWant)
Run Code Online (Sandbox Code Playgroud)

一个小注释:在Perl中,当你写的时候

$string =~ m/lalala(.*)lalala/;
Run Code Online (Sandbox Code Playgroud)

正则表达式可以匹配字符串中的任何位置.等效是通过re.search()函数而不是re.match()函数来完成的,这要求模式匹配从字符串的开头开始.


小智 5

import re
data = "some input data"
m = re.search("some (input) data", data)
if m: # "if match was successful" / "if matched"
  print m.group(1)
Run Code Online (Sandbox Code Playgroud)

检查文档了解更多信息。