2

少なくとも3文字の後でのみ、それらの文字の1つだけが一致する必要があります。たとえばlumia820、一致する場合は一致する必要がありますa8が、一致するものはaa6ありません。私の現在の試みはですが/([a-z]{3,})([0-9])/、これには誤って主人公が含まれています。これはおそらく正規表現のスペシャリストにとっては簡単なものですが、私はここで完全に立ち往生しています。誰かplsが助けてくれますか?

4

2 に答える 2

2

少なくとも3つ必要な場合は、{2,}2つ以上を一致させてから、次の数字と一緒に次の文字をキャプチャするために使用できます。

/[a-z]{2,}([a-z][\d])[\d]*/
  • [a-z]{2,}開始時に少なくとも2文字に一致します。これにより、キャプチャする文字の前に2つ以上の文字が存在するようになります。
  • ([a-z][\d])次の文字とそれに続く最初の数字をキャプチャします
  • [\d]*残りの末尾の数字と一致します。

これを固定する必要がある場合は、忘れないでください^$

/^[a-z]{2,}([a-z][\d])[\d]*$/

JavaScriptの例:

// Matching example aabc9876 yields c9
"a string with aabc9876 and other stuff".match(/[a-z]{2,}([a-z][\d])[\d]*/)
// ["aabc9876", "c9"]

// Non-matching example with zx8 
"a string with zx8 should not match".match(/[a-z]{2,}([a-z][\d])[\d]*/)
// null
于 2012-09-04T19:45:13.363 に答える
2

後読みが可能な環境にいると仮定すると、次のように実行できます。

/(?<=[a-z]{2,})([a-z][0-9])/

これにより、キャプチャする文字の直前に2つ以上の文字が検索され、キャプチャグループに含めずにそこにあることを確認してから、3番目(またはそれ以上)の文字の後に数字をキャプチャします。キャプチャ自体は、3番目の文字がそこにあることを確認します。

コメントごとに@HolyMac:

私はc#を使用しており、Objective-Cとの違いはわかりませんが、次のように一致f9します。

string testString = "abasfsdf9314";
Regex regex = new Regex("(?<=[a-z]{2,})([a-z][0-9])");
Match match = regex.Match(testString);
于 2012-09-04T19:46:36.417 に答える