複数の括弧が存在するときに特定の括弧内に情報を抽出するための正規表現を使用する -- java フィールド と regex フィールド 関連 問題

Using regex to extract information inside specific brackets when multiple brackets are present












-1
vote

問題

日本語

これを含むファイルを持っています:

<事前> <コード> dependencies { compile group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0" compile group: "org.osgi", name: "org.osgi.core", version: "6.0.0" } deploy { deployDir = file("${Home}/osgi/modules") }

と私は依存関係の内側の情報を抽出したいです。

dependencies.*[^}] を使用しようとしたときは、展開用のクローズブラケット以外のすべてを取得します。

クローズブラケットの最初の出会いで停止するために正規表現を手に入れるにはどうすればよいですか?

英語

I have a file that contains this:

dependencies {     compile group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0"     compile group: "org.osgi", name: "org.osgi.core", version: "6.0.0" }  deploy {     deployDir = file("${Home}/osgi/modules") } 

and I want to extract the information inside dependencies bracket.

When I tried to use dependencies.*[^}] I would get everything except the close bracket for deploy.

How can I get the regex to stop at the first encounter of close bracket?

</div
     
 
 

回答リスト

2
 
vote
vote
ベストアンサー
 

非貪欲検索を使用する

<事前> <コード> databaseError.getMessage()3
 

Use a non-greedy search

dependencies.*?[^}]} 
</div
 
 
   
   
0
 
vote

databaseError.getMessage()5 databaseError.getMessage()5 の数量詞を使用して、閉めブレースに移動し、<コード> databaseError.getCode() == DatabaseError.NETWORK_ERROR6616 を使用して databaseError.getCode() == DatabaseError.NETWORK_ERROR66614 を使用できます。リテラルのシンボルとして(エスケープは必要ありません):

<事前> <コード> databaseError.getMessage()7

regex demo

ここでは、正規表現のパフォーマンスのみを妨げていることをここに見守っていません。

 

You can use a negated character class [^}] with a * quantifier to get to the closing brace, and just use } to match it as a literal symbol (it does not need escaping):

dependencies[^}]*} 

See regex demo

No need for any look-arounds here that only hamper regex performance.

</div
 
 
0
 
vote

理解の簡単な方法は、不規則な中括弧を一致させることです:

<事前> <コード> databaseError.getMessage()8

これは、 dot all フラグを必要としないという利点を持っていない(ドットマッチニューラインを一致させる)。

あなたはまた心配すること、または理解したり、貪欲/消極的な量子化剤を持ったりする必要はありません。

背後に見えることは、が一致する(キャプチャしたグループではなく)ターゲットです。

 

Simple to understand way is to match non-close braces:

(?<=dependencies {)[^}]*  

This has the advantage of not requiring the dot all flag (that makes dot match newlines).

You also don't have to worry, or understand, or use, greedy/reluctant quantifiers.

The use of the look behind means that the entire match (not a captured group) is your target.

</div
 
 

関連する質問

2  括弧で囲まれていないC#コードにすべてのIFステートメントを見つけたいです。正規表現を通して  ( I want to find all if statements in c sharp code which are not followed by brack ) 
すべての if ステートメントと for ステートメントを見つけたいと思います。 if ステートメントに1行を書くと、ほとんどカーリーブラケットに囲まれているため、それらすべての if および for ステートメント。 助けてください! この文をキャプチャし...

30  C ++で使いやすい正規表現のサポート[閉まっている]  ( Easy to use regular expression support in c ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? ...

2  単語または句のインスタンスを見つけるための正規表現 - その単語やフレーズが中括弧である場合を除く  ( Regex to find instance of a word or phrase except if that word or phrase is i ) 
最初の免責事項。私は正規表現について少し知っていますが、私は専門家ではありません。彼らは私が一年に2回、私が本当に2回必要なものであるようですので、私の脳の「上に」しないでください。 状況:特定の単語を一致させるために正規表現を書いて、それを「osttric...

1  Perl:正規表現を使用してテキストからデータを抽出する  ( Perl extracting data from text using regex ) 
Perlを使用して正規表現でテキスト処理を行います。入力を制御していません。以下の入力の例をいくつか示しました。 項目BとCは、値が異なる文字列n回になることができます。私はすべての値を背面参照として取得する必要があります。それとも私はすべての耳です。 ブ...

49  正規表現:文字列内の2つのタグ間のサブストリングを引き出す  ( Regex to pull out a sub string between two tags in a string ) 
私は次の形式でファイルを持っています: <前> データデータ データ [始める] データ私が欲しいデータ [終わり] データ <コード> [Start] [End] タグの間から Data I want を正規表現を使用してつかみたいと思います。誰かが...

5  DFA - >正規表現  ( Dfa regular expression ) 
私は紙にDFAを書いて、それを正規表現のセットに翻訳したいです。誰もがこれを行うための良いツールを知っていますか? ...

1  正規表現のマッチング文字を除く  ( Excluding matching characters in regular expression ) 
私は正規表現の問題で立ち往生しています。 私は一致する必要がある文字列を持っています。文字列は常に2文字で始まり、次に6桁の数字、e.g。 EF123456 AB123456 しかし、無視する必要がある文字の組み合わせが1つあります。 e.g。: ...

59  PREG_REPLACEをPHPで使用するときは、一致する方法がありますか?  ( How can i get at the matches when using preg replace in php ) 
私は単語の大文字をつかみ、それらをスパンタグで包み込もうとしています。 preg_replace を使用していますが、抽出目的では何も出力していません。 。 <事前> <コード> preg_replace("/[A-Z]/", "<span class="i...

11  木構造のための正規表現?  ( Regex for tree structures ) 
ツリー構造を検索して変更するための正規表現はありますか?簡潔なミニ言語(Perl Regexなど)が私が探しているものです。 これは私が探しているものを明確にするかもしれない例です。 <事前> <コード> <root> <node name="1"> ...

6  PythonのReモジュールを使用して1回の急増で任意の順序付けられていないグループのセットを取得することが可能ですか?  ( Possible to retrieve an arbitrary unordered set of named groups in one swoop wit ) 
これはいくつかの問題に対してスーパーハンディーです: <事前> <コード> >>> re.search('(?P<b>.b.).*(?P<i>.i.)', 'abcdefghijk').groupdict() {'i': 'hij', 'b': 'abc'} ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有