if re match 和 group capture 是否在同一行?
Does an if re match & group capture in the same line?
Python 中有没有办法在同一行中进行 if 重新匹配和组捕获?
在 PERL 中我会这样做:
my $line = "abcdef";
if ($line =~ m/ab(.*)ef/) {
print "\n";
}
输出:
badger@pi0: scripts $ ./match.py
cd
但我在 Python 中找到的最接近的方式是这样的:
import re
line = 'abcdef'
if re.search('ab.*ef', line):
match = re.findall('ab(.*)ef', line)
print(match[0])
输出:
badger@pi0: scripts $ ./match.pl
cd
这似乎必须匹配两次。
只需删除 search
。你不需要它。
matches = re.findall('ab(.*)ef', line)
print(matches)
或者,如果您只对第一场比赛感兴趣,请删除 findall
:
match = re.search('ab(.*)ef', line)
if match:
print(match.group(1)) # 0 is whole string, 1 is first capture
Python 中有没有办法在同一行中进行 if 重新匹配和组捕获?
在 PERL 中我会这样做:
my $line = "abcdef";
if ($line =~ m/ab(.*)ef/) {
print "\n";
}
输出:
badger@pi0: scripts $ ./match.py
cd
但我在 Python 中找到的最接近的方式是这样的:
import re
line = 'abcdef'
if re.search('ab.*ef', line):
match = re.findall('ab(.*)ef', line)
print(match[0])
输出:
badger@pi0: scripts $ ./match.pl
cd
这似乎必须匹配两次。
只需删除 search
。你不需要它。
matches = re.findall('ab(.*)ef', line)
print(matches)
或者,如果您只对第一场比赛感兴趣,请删除 findall
:
match = re.search('ab(.*)ef', line)
if match:
print(match.group(1)) # 0 is whole string, 1 is first capture