正規表現を使用して文字列内の特定の文字を置き換え

フィリップ:

正規表現に新しいの一種だといくつかの助けをしたいと思い、私はそう。私は動的に入力文字列を生成して、サンプルは、その次のとおりです。

(ACTOR > 0OR(PROC <> NULL AND REVIEW=NULL ANDFERDINAND = NAME ) )

今、私がしなければならない置き換えるOR|AND&===<>!=とそれらなしで文字の間にスペースを提供しています。

通常、私は使用することができstring.replace()、これを行います。しかし、以降の文は、スペースの有無にかかわらず来ることができるとさえ以来ANDの場合のように、他の言葉で存在することができるFERDINAND、私は少し難しいそれを見つけることです。

期待される結果:

( ACTOR > 0 | ( PROC != NULL & REVIEW == NULL & FERDINAND == NAME ) )

誰かがこれで私を助けることができるのであれば、私は思っていました。前もって感謝します..

与えられました:

あなたはこれを試すことができますが、ケースをANDFERDINAND扱うことができません。このために正規表現を分離する場所のための簡単な基準が存在しないため、適切ではありません。

String str2 = str1
      .replaceAll("([0-9])(?=[A-Z])", "$1 ")                 //1
      .replaceAll("\\bAND\\b", "&")                          //2
      .replaceAll("\\bOR\\b", "|")                           //3
      .replaceAll("(?<![=<>!])=(?!=)", "==")                 //4
      .replaceAll("<>", "!=")                                //5
      .replaceAll("(?<=[^&| ])(==|!=|&|\\)|\\|)", " $1")     //6
      .replaceAll("(==|!=|&|\\(|\\)|\\|)(?=[^ &|])", "$1 "); //7

最初の単語文字(正ルック先)に続く番号を区切ります。

第二第三の代替ANDOR単語の境界で。

第四に代わり=、それはの一部でない場合==!=<=または>=(前に負の外観と負のルック先読み)。

第五に、代替<>(1簡単な試合)。

第六及び第七メイク==!=&()とは|空白に囲まれていますが、文字列の先頭や末尾に空白を追加しないでください。直前にまたは続いていない限り、彼らは唯一の置換されます&|

私は大文字のためにそれをやりました。あなたも小文字を処理しなければならない場合は、簡単に、適応することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=195639&siteId=1