私は以下のような正規表現を持っています:
$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:
とは何か、一致したテキストを取得する方法。
そのような正規表現の理由を私に尋ねたり、正規表現を変更するよう提案したりしないでください。これは、ソフトウェアで生成された正規表現です。質問のために問題を単純化しました。
この正規表現の理解を開始し、一致オフセットを取得する場所を教えてください。