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

Regex 正则表达式:将捕获设置为固定字符串,regex,regex-group,Regex,Regex Group,我希望匹配字符串a,但我希望捕获模式为b 要捕获名为id的a,我可以轻松执行以下操作: (?<id>a) 对于输入字符串中没有的捕获组,无法获取任何内容。捕获组(至少在Perl中)部分表示为原始输入字符串的开始/结束位置 如果您希望捕获组获得的值在输入字符串中,则可以使用lookarounds来实现。如果您的正则表达式风格有一个有限的lookback(如PHP),那么所需的字符串必须在匹配之后 例如: preg_match('/a(?=.*(?<id>b))/', 'a

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

要捕获名为
id
a
,我可以轻松执行以下操作:

(?<id>a)

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

如果您希望捕获组获得的值在输入字符串中,则可以使用lookarounds来实现。如果您的正则表达式风格有一个有限的lookback(如PHP),那么所需的字符串必须在匹配之后

例如:

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

谷歌
regex替换
你会发现很多例子你在试图在regex模式中使用变量吗?这个问题对任何人都有意义吗?@sgroves我更新了这个问题,这样更好吗?@alfasin我知道如何使用正则表达式。我不想用另一个字符串替换一个字符串。我希望捕获的字符不存在于原始字符串中。我试图解释这一点-他希望匹配一个模式,例如
a
,但将匹配的字符串作为不同的内容返回,例如
'b'
-有点像在运行时执行的匹配中的替换。他不想修改原始字符串。(不幸的是,我认为这是不可能的)
preg_match('/a(?=.*(?<id>b))/', 'a foo b', $matches);
print "matched '$matches[0]', id is '$matches[id]'";
matched 'a', id is 'b'