0

文字列内の条件を取り除くことができる必要があります。これは次のとおりです。

(("${Operation}" == "Fixed") && ("-" == "-"))

"${Operation}" == "Fixed"$ {}が含まれている()と、""またはその間の何かに置き換えられるようにしたいと思います。つまり、条件の左側に$ {}がある場合は、条件を完全に削除したいと思います。

4

4 に答える 4

1

これはそれに一致します

\([^(]*\${.*?}[^)]*\)

ここに画像の説明を入力してください

于 2012-06-11T21:14:30.727 に答える
1

一般に、ここでは正規表現は適切なアプローチではありません。有効なJavaScript構文である場合はたくさんありますが、それは正規表現にうまく適合しません。ただし、これを行う1つの方法があります。

var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');

二重引用符のみを処理します。両方のタイプの引用符を処理する必要がある場合、式はより複雑になります。両方のタイプの引用符を処理する必要があり、文字列に引用符が含まれている可能性がある場合、正規表現は実際には機能しません。

この問題を解決する別の方法を考えることができるなら、そうすべきです。たとえば、文字列はどこから来たのですか?別の形式でデータを取得できますか?

また、への呼び出し用にこの文字列を設定しているようですeval。何らかのユーザー入力が含まれている場合、これは悪い考えです。

于 2012-06-11T21:16:43.023 に答える
0

この正規表現/^\(?[^)&]*?\${.*\)/を使用して、最初の2行は正常に一致しましたが、他の2行は一致しませんでした。これはあなたが探しているものですか?

(( "$ {Operation}" == "Fixed")&&( "-" == "-"))

("$ {Operation}" == "Fixed"))

(( "$ Operation" == "Fixed")&&( "-" == "-"))

(( "-" == "-")&&( "$ {Operation}" == "Fixed"))

于 2012-06-11T21:18:08.873 に答える
0

興味深いことに、私は思いついた/\(("?\${.*}"?[^)]*)\)/g

'(("${Operation}" == "Fixed") && ("-" == "-"))'.replace(/\(("?\${.*}"?[^)]*)\)/g, '("")')

これはおそらく多すぎます*が、インターネットコーディングの質問はとにかく少し広く開かれているようです。

注:これは、特別な正規表現キャラクターのテストのようなものでした。ありがとうございます。

そして、私が書いた正規表現の沈没船を維持している唯一のもの[^)]*は、終わりではないものです)

于 2012-06-11T21:19:28.157 に答える