RegEx-可変長の数に一致


130

参照番号が散らばっているドキュメントを解析しようとしています。

テキストテキストテキスト{4:2}より信じられないほどのテキスト{4:3}かなり後の{222:115}に、さらにいくつかのテキスト。

参照は常に角括弧で囲まれ、常に2つの間にコロンが付きます。それらを見つけるための表現を書きました。

{[0-9]:[0-9]}

しかし、これは2桁または3桁の数字に出会った瞬間に明らかに失敗し、それがどうあるべきかを理解するのに苦労しています。3桁を超えることはありません。{999:999}は処理する最大サイズです。

誰かがこれを処理するための適切な表現のアイデアを持っていますか?


8
OPが気にしない場合でも、私は興味があります。なぜこの質問に反対票を投じるのですか?私はそれに問題があるとは思わない。
John

3
@ジョン:なんらかの理由で、特にregexタグに簡単な答えがある質問に反対投票するのが好きです。
CanSpice、2011

1
結局、この質問はグーグルでより高いランクを得て、私はこれで私の答えを見つけました。
Jasonfish

回答:


132
{[0-9]+:[0-9]+}

プラスを追加してみてください


検索に時間がかかりすぎました...この情報をありがとうございます!
レベル42

76

どの正規表現エンジンを使用していますか?それらのほとんどは、次の式をサポートします。

\{\d+:\d+\}

\d実際の省略形です[0-9]が、重要な部分は、追加で+意味「1つ以上」。


31

これを試して:

{[0-9]{1,3}:[0-9]{1,3}}

{1,3}「前の文字の1〜3に一致する」という意味です。


8

を使用して、前のアイテムを一致させる回数を指定できます{min,max}

{[0-9]{1,3}:[0-9]{1,3}}

また、あなたは使うことができます \d[0-9]ほとんどの正規表現フレーバーの代わりに数字にます。

{\d{1,3}:\d{1,3}}

繰り返し定義の一部ではないことを明確にするために、外側の{とのエスケープを検討することもでき}ます。


2
いいえ、ヨーロッパ以外の数字が好きでない限り、ほとんどの正規表現のフレーバーでは使用しないでください
。fileformat.info

1

{\ d *:\ d *}は動作するはずです。

*は、先行する0個以上の出現に一致することを意味します。これは数字です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.