web-dev-qa-db-ja.com

正規表現は最初の一致のみをキャプチャします

私はグーグルしてスタックオーバーフローによって提供される推奨される質問を調べてきました。しかし、私は答えを見つけることができませんでした。

正規表現を使用して文字列を解析したいのですが、文字列の例は

Lot: He said: Thou shalt not pass!

Lotをグループとしてキャプチャし、He said: Thou shalt not pass!。ただし、(.+): (.+)パターン、それは戻ります

Lot: He said:およびThou shalt not pass!

キャプチャすることは可能ですかHe said: Thou shalt not pass正規表現を使用していますか?

7
Wancak Terakhir

最初のグループには、貪欲でない(または怠惰な)カーディナリティが必要です:(.+?): (.+)

http://www.regular-expressions.info/repeat.html の詳細については、「貪欲の代わりに怠惰」の章を参照してください。

21
sp00m

これを試してみてください:

([^:]+):\s*(.*)
4
Kent
(?=.*?:.*?:)(.*?):(.*)

これを使えます。

デモをご覧ください。

http://regex101.com/r/rX0dM7/9

2
vks

フラグig-i =大文字と小文字を区別せず、g =最初の一致後には戻らない、および "(。:)?(。:。*) "。

ここで例を見ることができます https://regex101.com/r/SXjg1b/1

1
Matheus Dadalto

次のものは動作します。

([^:]+): (.+)

1
Venky