假设我已成功捕获以下群组:
/1 "text1"
/2 "notation1"
现在,我想将/1
替换为"newtext1"
iff /2
包含"notation1"
。这可以通过条件陈述吗?
或通过任何其他方法?
答案 0 :(得分:1)
正则表达式没有条件语句,允许您检查捕获组是否已捕获某个值。您有两种选择:
notation1
时匹配,即regex = (text1)(notation1)
,replacement = newtext1\2
。re.sub(r'(text1)(notation1)', lambda match: 'newtext1notation1' if match.group(2)=='notation1' else 'text1notation1', 'text1notation1')
答案 1 :(得分:0)
假设您在perl中,替换将由e
(使用三元条件运算符计算字符串作为运算符)修饰符完成。
$s = "text1 notation1";
$s=~s/(\w+)\s(\w+)/($2 eq "notation1")?"newtext1 $2":"$1 $2"/e;
print $s;