正規表現はシーケンスを認識し、それに基づいてアクションを実行できますか?
例:$ stringを検索するために正規表現が必要です。次に、$ stringの前にあるx文字数に基づいてカウントし、データを抽出します。
誰かが私にこの質問をよりよく言葉で表現したり、リンクを提案したりするのを手伝ってくれたら、それは大いにありがたいです!
正規表現で先読みと呼ばれるものを探しています。たとえば、以下の正規表現は、文字列の前に5〜7桁ある場合にのみ一致します。つまり、「文字列」を独自の変数に置き換える必要があります。
if (eregi('[[:digit:]]{5,7}(?=string)', $subject)) {
# Successful match
} else {
# Match attempt failed
}
PHPについてはわかりませんが、後方参照を提供する正規表現エンジンの場合、これでうまくいくはずです(JavascriptスタイルのRegExp作成を使用)。
var reg = new RegExp("^.*(.{"+x+"})"+str);
xが5で、strが「ワールド」の場合、正規表現は次のようになります。
/^.*(.{5})world/
この文字列で実行するsomethinghelloworld
と、一致する文字列はになりますhello
。
PHPの正規表現エンジンが何をサポートしているかはわかりませんが、これは理論上の正規表現のかなり一般的な拡張機能です。