1

私は初めてregexです。次のパターンに一致する正規表現を探して、文字列を抽出します。

 key1=test1
 key2="test1" // which will extract test1 stripping quotes
 key3=New test
 key4=New" "test // which will extract New" "test - as it is if the quotes come in between

で試しまし\\s*(\\S+)\\s*=\\s*(\\S+*+)たが、引用符が存在する場合に含める方法がわかりません。どんな助けでも本当に感謝します。

4

4 に答える 4

2

簡単な解決策は、それをPropertiesとしてロードすることです。これにより、探している解析が正確に実行されます。それ以外の場合は、各行を読み、最初の「=」で文字列を分割します。

于 2013-02-01T13:16:34.697 に答える
2

ネストされた引用符の問題を回避するための正規表現を使用しないソリューションを次に示します。

String extractValue(String input) {
  // check if '=' is present here...
  String[] pair = input.split("=", 2);
  String value = pair[1];
  if (value.startsWith("\"") && value.endsWith("\"")) {
      return value.substring(1, value.length() - 1);
  }
  return value;
}

を使用しているため、基本的にこれは正規表現なしではありませんが、使用をsplit()計画していた方法で正規表現を使用していません。

于 2013-02-01T13:19:45.393 に答える
0

を使用できます^([^=]+)=("([^"]*)"|([^"].*))$が、値が引用符で囲まれているかどうかに応じて、答えは 3 番目または 4 番目のグループに表示されるため、両方をチェックして、null でない方をプルする必要があります。

于 2013-02-01T13:23:41.780 に答える
0

正規表現の場合、正規表現に含めたい場合は、"を使用してエスケープするだけ\\"です。達成しようとしているものが何であれ、最初にhttp://www.regexpal.com/で直接テストしてください。

于 2013-02-01T13:25:17.287 に答える