正则表达式:将捕获设置为固定字符串

时间:2013-08-05 16:31:47

标签: regex regex-group

我想匹配字符串a,但我希望我的捕获模式为b

要捕获名为a的{​​{1}},我可以轻松完成:

id

但是当原始字符串只是(?<id>a) 时,我希望idb。即我希望捕获是不在原始字符串中的字符。

例如,在PHP中它看起来像:

a

1 个答案:

答案 0 :(得分:0)

无法获取任何不在输入字符串中的捕获组。捕获组(至少在Perl中)部分表示为原始输入字符串的开始/结束位置。

如果你想让捕获组得到的值在输入字符串中,你可以使用lookarounds来做到这一点。如果您的正则表达式风格具有有限的外观(如PHP),则所需的字符串必须在匹配之后。

例如:

preg_match('/a(?=.*(?<id>b))/', 'a foo b', $matches);
print "matched '$matches[0]', id is '$matches[id]'";

输出:

matched 'a', id is 'b'