3

次のパターンの文字列を検索する正規表現を作成しようとしています。

  1. 開き角かっこで始まり、{その後に二重引用符が続きます"
  2. 次に、1文字以上の英数字の文字列を使用できますa-zA-Z0-9
  3. 次に、別の二重引用符の"後にコロン:と開始中括弧が続きます[
  4. 次に、0文字以上の英数字の任意の文字列を許可しますa-zA-Z0-9

したがって、正規表現一致するいくつかの文字列:

{"hello":[blah
{"hello":[
{"1":[

そして、一致しないいくつかの文字列:

{hello:[blah
hello":[
{"2:[

これまでのところ、私が思いついた最高のものは次のとおりです。

String regex = "{\"[a-zA-Z0-9]+\":\[[a-zA-Z0-9]*";
if(myString.matches(regex))
    // do something

しかし、私はベースからかなり離れていることを知っています。正規表現の達人が私を巻き込むのを手伝ってくれる?前もって感謝します!

4

1 に答える 1

5
String regex = "{\"[a-zA-Z0-9]+\":\[[a-zA-Z0-9]*";

ここでの問題は、角かっこの前に余分なバックスラッシュが必要なことです。これは、角括弧に一致させるために正規表現を含める必要があるためです。つまり、Java コード パーサーのバックスラッシュをエスケープするために、文字列リテラルに含める必要があります。同様に、メタ文字であるため、正規表現でエスケープする必要がある場合もあります(制限された繰り返し回数の場合)。\[\\[{

String regex = "\\{\"[a-zA-Z0-9]+\":\\[[a-zA-Z0-9]*";
于 2013-01-23T16:20:41.237 に答える