2017-03-21 10 views
0

は考える:私は一致させたい正規表現可能な最短一致

A 1234 AAAAAA AAAAAA 1234 7th XXXXX Rd XXXXXX 

\d+.*?Rd

をしかし、それはから始まる一致しますRd\d+ より

1234 7th XXXXX Rd 

をより多くの何を使用していないと私は試してみました最初の1234は2番目の1234の代わりにRdまで、私は.*?がshとマッチすると思ったortest可能な試合、何が間違っている?

+0

は、あなたが問題を示して、より良い例の入力を表示することができます使用することができますか?この両方の回答は、この特定のケースではあなたの意図した結果を得ています。しかし、「最短」の試合ではどういう意味ですか? –

答えて

1

.*を追加すると、Rd\d+以上を使用しています。あなたは形式としてNUMBER-SPACE-SOMETHING-Rdをとることができる場合 - あなたはミックスに\sを追加し、

/(\d+\s+\d+.*?Rd)/ 

console.log('A 1234 AAAAAA AAAAAA 1234 7th XXXXX Rd XXXXXX'.match(/(\d+\s+\d+.*?Rd)/g))

1

は、次のパターンを使用します

^.*(1234 7th.*?Rd).*$ 

説明:

^.*  from the start of the greedily consume everything until 
(1234 7th capture from the last occurrence of 1234 7th 
.*?Rd)  then non greedily consume everything until the first Rd 
.*$  consume, but don't capture, the remainder of the string 

ここでは、コードスニペットである:

var input = "A 1234 AAAAAA AAAAAA 1234 7th XXXXX Rd XXXXXX"; 
 
var regex = /^.*(1234 7th.*?Rd).*$/g; 
 
var match = regex.exec(input); 
 
console.log(match[1]); // 1234 7th XXXXX Rd

関連する問題