我有一个正则表达式如下:
$regex = qr/(?sx-im:(?sx-im:(?:^|(?<=\n)))(?=(?sx-im:[\ \t]*)(?sx-im:(?:^|(?<=\n))Data\ and\ value)(?sx-im:[\ \t\r]*(?:$|\n))))/;
我将其与以下文本进行匹配:
$text ="Data and value";
现在我想获取匹配开始偏移量、匹配结束偏移量和匹配文本。
通常我使用@-
,@+
并$&
得到这些如下:
if($text =~ m/$regex/)
{
print "START Offset = ".$-[0];
print "END Offsset = ".$+[0];
print "Matched Text = ".$&;
}
在这种情况下,匹配成功,但我无法获得正确的偏移量和匹配的文本。它只是打印0
为比赛开始偏移量和比赛结束偏移量。对于匹配的文本,它的打印为空。
我想了解这个正则表达式的不同组成部分。具体是什么(?sx-im:
,以及如何获得匹配的文本。
请不要问我这种正则表达式的原因或建议我更改正则表达式。这是一个软件生成的正则表达式。为了提问,我简化了我的问题。
请指导我从哪里开始理解这个正则表达式并获得匹配偏移量。