私はphpファイル内のすべての関数ブロック(最初から最後まで)に一致する正規表現を探しています。例:ファイル内のphp関数を見つけるためのpython正規表現
function test_function($var) {
if ($var == 'somethin') {
print 'hi';
}
etc.
}
ブロックの開始オフセットと終了オフセットが必要です。どのような正規表現を使用できますか?
私はphpファイル内のすべての関数ブロック(最初から最後まで)に一致する正規表現を探しています。例:ファイル内のphp関数を見つけるためのpython正規表現
function test_function($var) {
if ($var == 'somethin') {
print 'hi';
}
etc.
}
ブロックの開始オフセットと終了オフセットが必要です。どのような正規表現を使用できますか?
これは非常に複雑で、1つの正規表現では実行できません。
あなたは簡単に `このような関数の先頭を一致させることができると思うかもしれ:
\bfunction\b\s+\S+[^\(](\s+)?\(.*?\)\s+\{
しかし、あなたはできない、これはコードに何があるされている場合ので?
$string = "function myfunction() {}";
引用されていないものをすべて検索する必要があります。あなたは機能が停止したときに知っておく必要があると私は任意の正規表現について考えることができないので、あなたが何をすべき次の事はすべて{
と}
をカウントしている
(?:(?=(?:(?:\\.|"(?:\\.|[^"\\])*"|[^\\'"])*'(?:\\.|"(?:\\.|[^"'\\])*"|[^\\'])*')*(?:\\.|"(?:\\.|[^"\\])*"|[^\\'])*$)(?=(?:(?:\\.|'(?:\\.|[^'\\])*'|[^\\'"])*"(?:\\.|'(?:\\.|[^'"\\])*'|[^\\"])*")*(?:\\.|'(?:\\.|[^'\\])*'|[^\\"])*$)(?:\\.|[^\\'"]))+
:だから、引用符で囲まれた文字列を除外するために、あなたは、この正規表現を使用することができますそれはこれを行うことができます。ですから、これをループスルーする必要があります。
'(?R'でカウントすることもできます(おそらく、Pythonではそうでないかもしれません)。いくつかのサブルーチンは引用を単純化します。任意のPHPの場合、コメントなども注意する必要があります。 (近似はしばしばより良いオプションです) – mario
@micha、それは何か*引用符で囲まれた文字列を除く*正規表現は正確に行われるはずですか?そしてPHP文字列では正しく動作しないようです有効な文字列として '' foo "bar''を扱います – Qtax
引用符で囲まれた文字列を除くすべてを選択します[http://gskinner.com/RegExr/?2vcr2] – noob
これを見てください:https://github.com/ramen/phply
正規表現はまったく適していません。あなたは単純なパーサーでもっとうまくいくでしょう。 –