2017-03-21 6 views
-1

私はRuby 2.4を使用しています。正規表現では、数字の後に特定の文字(または別の数字)が続く文字列と一致させたいだけですが、数字に続く他の文字は一致しないようにする方法を指定しますか? 「:」私の特別な文字がある場合には、され、これが一致する必要があります:文字列内の数字に続く特定の文字を一致させる方法

"1:9" 

が、これはいけない:

"1:9-2" 

上記の文字列で、「のインスタンスがあるので - 数字は「9」に続く。私は右の正規表現を持っていたと思ったが、これは上記2例のためにtrueを返している:それが表示されます

2.4.0 :001 > ab = "1:3" 
=> "1:3" 
2.4.0 :002 > ab =~ /\d:\d/ 
=> 0 
2.4.0 :003 > ab = "1:3-4" 
=> "1:3-4" 
2.4.0 :004 > ab =~ /\d:\d/ 
=> 0 
+0

2番目の '\ d'('/\ d:\ d \ z/')の後ろに文字列の最後が来ると思いますか?あるいは、 '/ \ A \ d:\ d \ z /'のような文字列全体にマッチしますか? –

+1

投稿する前にあなたの質問を校正し、irbプロンプトを削除してください。 –

+0

'数値以外のものは一致しないはずです'正規表現でマッチした文字列以外の文字列を除外しようとすると、 '^' '$'のアンカーが必要です。それ以外の場合は、問題をよりよく定義する必要があります。 – sln

答えて

0

あなたはLEAT一桁に含まれている必要があり、コロンで区切られた英数字の文字列を提示した文字列と一致する必要があります。 - 文字列アンカーの開始

    • \A:あなたはRubular demo(複数行テスト文字列のために適合)

      詳細を参照してください

      /\A(?=\D*\d)[[:alnum:]]+(?::[[:alnum:]]+)*\z/ 
      

      を使用する必要が

      (?=\D*\d) - 肯定的な表情前方((?=...))数字以外の文字0+(\D*

    • [[:alnum:]]+後桁(\d)を必要 - 1以上の文字または数字
    • (?::[[:alnum:]]+)* - ゼロ以上の配列:
      • : - コロン
      • [[:alnum:]]+から1文字以上の文字/数字
    • \z - 文字列の末尾。
  • 関連する問題