区切り文字自体は返さずに、2 つの区切り文字の間に含まれる文字セットを文字列から抽出する必要があります。
簡単な例が役に立つはずです:
ターゲット: 角括弧自体は返さずに、角括弧内の部分文字列を抽出します。
ベース文字列:This is a test string [more or less]
次のreg. exを使用する場合。
\[.*?\]
一致は です。 (括弧なし)[more or less]
のみを取得する必要があります。more or less
それは可能ですか?
ベストアンサー1
簡単です:
(?<=\[)(.*?)(?=\])
技術的には先読みと後読みを使用しています。先読みと後読みのゼロ幅アサーションパターンは次のものから構成されます。
[
キャプチャされないa が先行します(後読み)。- 貪欲でないキャプチャグループ。最初の で停止するのは貪欲ではない
]
。 ]
キャプチャされない (先読み)が続きます。
あるいは、角括弧内の内容をキャプチャすることもできます。
\[(.*?)\]
一致全体ではなく、最初にキャプチャされたグループを返します。