4

したがって、これがどのように機能するかを理解しているかどうかはわかりません a simple explanation to how they work。私はおそらくそれをずっと持っています。A pure regex solution is required, and I don't know if this is possible. もしそうなら、解決策も素晴らしいでしょうが、正しい方向への突きは私の学習プロセスにとって良いでしょう.^_^

if/then/elseこれは、正規表現エンジンに組み込まれているオプションがフォーマットされていると私が考えた方法です。

?(condition)if regex|else regex

この文字列がJavaScriptの特定のセクション内に存在する場合にのみ、非常に特定の場所から文字列をキャプチャしたい. これは、かなりの量の調査の後に機能すると思った方法であるため、このコードのいくつかのバリエーションを試しましたが、すべてこのような結果になりました。

((?^view_large$)Tables-137(.*?)search.htm)

Also of relevance: I'm using an java based app that has regex searches which pull the data I need so I cannot write an if statement in java which would be my preferred method.このようにしなければならないのは苦痛ですが、現時点では他に選択肢がありません。より用途の広いオプションのために、純粋な正規表現の代わりにJavaコード機能を許可するように、私は彼らが本当に一生懸命努力しています。

要約すると、is there even a if/then option in regex and if so how is it formatted for what I'm trying to accomplish?

編集:「if条件」にしたい文字列は次のようなものです:view_large文字列が存在し、nullでない場合500/、使用したすべてのキャッチグループ内でキャプチャされた正確な文字列をキャプチャします:(.*?)

4

3 に答える 3

9

Java regexpには条件はありませんが、次のように、相互に排他的な後読み構造を含む2つの式を記述することで、条件をシミュレートできます。

((?<=if )then)|((?<!if )end)

"if "この式の前に;が付いている場合、この式は「then」と一致します。先行していない"end"場合に一致します"if "

于 2012-10-02T13:49:34.843 に答える
2

java.util.regex.Pattern「このクラスではサポートされていない Perl コンストラクト」のリストにある言及の Javadoc :

  • 条件構造と.(?(condition)X)(?(condition)X|Y)

だから、サイコロはありません。ただし、Javadoc を調べて、サポートされている正規表現機能を使用して必要なものを実現できるかどうかを確認する必要があります。(または、より詳細な例を投稿していただければ、お手伝いできます。)

于 2012-10-02T13:45:21.967 に答える
1

ルックアラウンドアサーションを試してください。

たとえば、どこかに4桁以上の数字がある場合にのみ、FOOBARをキャプチャするとします。

(?=.*\d{4}).*(FOOBAR)
于 2012-10-02T13:48:57.403 に答える