0
jsファイルからすべての型キャストを削除しようとしています。JS正規表現は型キャストを削除します
私が持っている現在の(ない加工)正規表現は次のとおりです。
/(?!new\s+&?!function\s+)\w+\((.+)\)/gi
は基本的に私は、クラスのようなもの(VAR)ではなくnew Class(arg)
またはfunction Func(arg)
感謝をしたいです!
jsファイルからすべての型キャストを削除しようとしています。JS正規表現は型キャストを削除します
私が持っている現在の(ない加工)正規表現は次のとおりです。
/(?!new\s+&?!function\s+)\w+\((.+)\)/gi
は基本的に私は、クラスのようなもの(VAR)ではなくnew Class(arg)
またはfunction Func(arg)
感謝をしたいです!
s = "Basically I want anything like Class(var) but not new Class(arg) or function Func(arg)"
re = /(?:(?!new|function)\b\S+|^|[^\w\s])\s*\b([A-Z]\w*\s*\(.*?\))/g
for (var match; (match = re.exec(s));) { alert(match[1]); }
は
Class(var)
を生成するが、実際のパラメータリストには、ネストされた括弧がない場合にのみ、正しくマッチします。一般的な文法はネストされたカッコ内のグループを扱うことができないので、一般に関数呼び出しを正規表現に一致させることはできません。
私はあなたの答えが私が(実際にはかなり巧みに)置いた質問に答えると思うので、私はこれを与えましたが、これをスクリプトに入れた後、私が言及しなかった他のものを変え始めました。 – Jacksonkr
@Jackson、あなたはあなたのスクリプトを解析し、得られた解析木を歩いてそれを修正し、それをレンダリングするための適切なJavaScriptパーサーを調べましたか? http://stackoverflow.com/questions/6511556/javascript-parser-for-javaで最近これについて議論しました。もしあなたがJavaに慣れていなければ、Pythonや他の言語のためのSOに関する他の議論があります。私はJSLintがJSパーサの周りに構築されていると信じています。 –