すべてのケースを満たすために、指定された変数を印刷するには1つの正規表現の書き方

ウェンディ:

ファイル内のいくつかのステートメントを見つけたいI`d。そして、私のような要素とサブ要素name.The文をプリントアウトする必要があります

set element elemName subElem sumElemName

要素またはサブ要素名が一つ以上のスペースが含まれる場合、文字列全体を二重引用符で囲む必要があります。要素またはサブ要素名にスペースがない場合は二重引用符は不要です。したがって、次の文は有効です。

set element "aaa bbb" subElem "ccc"
set element "aaa bbb" subElem ccc
set element "aaa" subElem "ccc"

私はいくつかの例を満たすために2つの式を書き込もうとしました。しかし、すべてのケースを満たすために1つの正規表現を作成する方法?

String regex = "^\\s*set\\s+element\\s+\"(.*)\"\\s+subElem\\s+\"(.*)\"\\s*$";
String regex = "^\\s*set\\s+element\\s+(?<!\")(\\S+)\\s+subElem\\s+(?<!\")(\\S+)\\s*$";
Wiktor第Stribiżav:

あなたは二重引用符として、または非空白文字のチャンク内の部分文字列にマッチしますelemNames

String regex = "^\\s*set\\s+element\\s+(\"[^\"]*\"|\\S+)\\s+subElem\\s+(\"[^\"]*\"|\\S+)\\s*$";

参照してください。正規表現のデモを

(\"[^\"]*\"|\S+)パターンマッチ

  • \"[^\"]*\"- "その後、任意の0+以外の文字"、その後、"
  • | - または
  • \S+ - 1+非空白文字。

おすすめ

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