2011-01-11 16 views
0

今日、私は正規表現= D \d+は桁の任意の番号に一致するように正規表現:r05c75 - ブックエンドの間の数字を抽出

は、私は、いくつかの基本を理解し、どのように私は「R」の後の値になるだろうが学んでいます文字列の中の「c」とr05c75(数字は任意の長さ)

これらは行と列の値を表し、「r」と「c」の間の数字と「c」と$ストリングの終わり)。

私はこの質問はまた、同様に、他の初心者のためエリュシダティブになります願っています。

一般的な場合は、AAA、BBB、CCC、DDDとは、任意の(既知の)文字列であり、D-トリプレットは単なる数字である

aaa DDD bbb DDD ccc DDD (without spaces) 

あろう。

私は、文字列r05c75の(妥当性を確認してください)「と一致する」ことができますが、私は数字を抽出する方法がわからないです。

これは私がすべての重複を逃した場合、私は申し訳ありませんが、おそらくかなり一般的な質問です。

答えて

2

(?:\w+(\d+))+(?: ...)構文は(+と)私はそれが繰り返されることができると言うことを可能にする「非キャプチャグループ」を意味しますが、それがなくても、数字

でのみマッチグループを返します。一般的な正規表現でありますマッチグループに表示されます。他のグループ(\d+)には?:がないため、キャプチャされます。だから、

、英語でこの正規表現を読んで「は、一つ以上の数字が続く1文字以上の一つ以上のグループと一致し、そうそう桁のグループをキャプチャする」、と言います。

+0

あなたがグループを取り込み表示するために括弧を使用している場合は、明示的に非キャプチャグループを述べることがありますか? – sova

+0

はい、かっこでグループ化すると、デフォルトでキャプチャされます。 '(?:'を使用すると、キャプチャされません。 –

0
r(\d+)c 

括弧は「捕獲」の正規表現の概念を示している...あなたはあなたの参照ドキュメントを検索する場合、彼らはあなたにそれについての詳細を教えてください。

0

あなたは括弧を使用して値を抽出することができます。

r(\d+)c(\d+) 

これはあなたに$ 1行番号と$ 2の列番号を与えます。一般的に

0

正規表現での作業あなたは部分式にグループをマークすると、マッチが成功した後、そのグループの内容を取得する能力を持っています。あなたのケースでは

我々は、ユーザーjavascriptの正規表現エンジンあなたは、このようr95c75の一致を記述した場合:

var match = "r05c75".match(/r(\d+)c(\d+)/); 
if (match) // if successfull match 
{ 
    var n1 = match[1]; 
    var n2 = match[2]; 
} 

N1、N2は、数字が含まれています。

関連する問題