2

特定の文字列から中括弧でマークされたトークンを抽出する必要があります。

Expresso を使用して、解析するものを構築しようとしました...

-------------------------------------------------------------
"{Token1}asdasasd{Token2}asd asdacscadase dfb db {Token3}"
-------------------------------------------------------------

「Token1」、「Token2」、「Token3」を生成します

使ってみた..

-------------------------------------------------------------
({.+})
-------------------------------------------------------------

……でも、それが表情全体にマッチしているように見えた。

何かご意見は?

4

4 に答える 4

6

試す

\{(.*?)\}
\{ は "{" をエスケープします (正規表現で意味があります)。
\} は同様に、終了の } バケツをエスケープします。
.*? .* だけでなく、最小限のデータを取得します
これは「貪欲」で、できる限りのことをします。
トークンがそうする (またはする必要がある) という保証がある場合
特定の形式である必要がある場合は、.* を適切な形式に置き換えることができます
文字クラス。たとえば、可能性の高いケースでは、
単語だけが必要な場合は、(.*?) の代わりに (\w*) を使用できます。
これには、} 文字を閉じないという利点があります。
内部式で一致するクラスの一部、
だからあなたは必要ありませんか?修飾子)。
于 2009-01-29T15:32:32.947 に答える
2

別の解決策:

(?<=\{)([^\}]+)(?=\})

これは先読みと後読みを使用するため、ブラケットはまったく消費されません。

于 2009-01-29T19:19:02.067 に答える
2

試す:

\{([^}]*)\}

これにより、波括弧内で検索がクランプされ、閉じ波括弧で停止します。

于 2009-01-29T15:31:47.347 に答える
1

中括弧は正規表現では特別な意味を持つため、エスケープする必要があります。と を使用\{\}てそれらを一致させます。

于 2009-01-29T15:32:57.437 に答える