2011-09-13 10 views
75

私は参照番号がその全体に散在している文書を解析しようとしています。RegEx - 変数の長さを一致させる

多くの後で {222:115}の文字列{4:2}とそれ以上のテキストがあります。

参照は常に括弧で囲まれており、その間には常にコロンがあります。私はそれらを見つけるための表現を書いた。

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

しかし、これは明らかにあなたが二、三桁の数字に遭遇瞬間を失敗し、私はそれがどうあるべきかを考え出すのトラブルを抱えています。対処する最大サイズは3桁を超えることはありません{999:999}。

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

+8

OPが気にしない場合でも、私は不思議です:なぜこの質問のdownvoteですか?私はそれに間違っているものは見ません。 – John

+3

@ジョン:何らかの理由で、人々は簡単な答えがある場所、特に 'regex'タグで質問をdownvoteしたいと思っています。 – CanSpice

+35

@ xanatos - だから、SOの質問は、彼らが尋ねる特定の主題にすでに有能な人のみです。どのような素晴らしい計画。 –

答えて

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

プラスを追加してみてください(複数可)

21

このお試しください:{1,3}手段 "前の文字の1と3の間の一致"

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

を。

8

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

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

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

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

あなたはまた、単にそれを明確ことを確認するために、外側{}をエスケープ検討する必要があります彼ら繰り返し定義の一部ではありません。

+2

ヨーロッパ以外の数字が大好きでない限り、ほとんどの正規表現のフレーバーではしないでください:http://www.fileformat.info/info/unicode/category/Nd/list.htm – xanatos

48

どのような正規表現エンジンを使用していますか?

\{\d+:\d+\} 

\dが実際に[0-9]の省略形ですが、重要な部分は、「一つ以上」を意味+の追加です:それらのほとんどは、次の式をサポートします。