2017-05-12 15 views
5

最初の文字と次の3桁の複数の一致を得るために正規表現を書いてみたい。いくつかの有効な例: A123、 V322、 R333。 私はそのRegExpで複数の文字を一致させる

[a-aA-Z](1)\d3 

ような何かをしようとそれだけで最初の試合に私を取得します! enter image description here この正規表現を書き直して複数の結果を得る方法を教えてください。ありがとう、ありがとうございました!それが一致するため

+0

あなたチャークラス '[-AA-Z]'のみ小文字 'A'と大文字'-Z'と一致します。それがあなたのために起こっているかどうかはわかりません。 – quackenator

+0

最初の文字_をどういう意味ですか?最初は何ですか? – sln

+0

'[[:alpha:]] \ d {3}' [Test](https://regex101.com/r/K6rgA6/1) –

答えて

4

あなたの正規表現は動作しません:

  • [a-aA-Z] - その後、ASCII文字、
  • (1)から1桁(とキャプチャに入れ)
  • \d - 任意の1桁を
  • 3 - 3桁。

ので、それもYE最初文字ではありません長いフレーズで、Y193E103、などと一致します。

あなたはワード境界を使用して

\b[a-aA-Z][0-9]{3} 

NOTEとしてあなたのパターンを修正する必要があります:あなたは単語全体としてそれを一致させる必要がある場合は、最後に\bを追加:\b[a-aA-Z][0-9]{3}\b

regex demoを参照してください。

詳細

  • \b - 大手ワード境界
  • [a-aA-Z] - ASCII文字
  • [0-9]{3} - 3桁の数字。

C#コードは:

var results = Regex.Matches(s, @"\b[a-aA-Z][0-9]{3}") 
     .Cast<Match>() 
     .Select(m => m.Value) 
     .ToList(); 
+0

私たちはマッチ対マッチの可能性が高いと思っています。 –

+1

問題は、OPがregex101.comで正規表現をテストする方法を理解できないことだけです。しかし、.NET正規表現の構文をサポートしていないオンラインWebテスターで.NET正規表現をテストすることはほとんど意味がありません。とにかく、助けてくれるコードも提案します。 –

+1

偉大な答え@WiktorStribiżewありがとう! –

関連する問題