文字列内の任意の場所で400〜499の数値に一致させようとしています。たとえば、両方:
string = "[401] One too three"
string2 = "Yes 450 sir okay"
一致する必要があります。両方とも:
string3 = "[123] Test"
string4 = "This is another string"
失敗するはずです。
正規表現を書くための最良の方法は何ですか?私が書いた:
string =~ /\d{3}/
文字列に3桁の整数が含まれているかどうかを確認します。それが範囲内にあるかどうかはどうすればわかりますか?
あなたが実際に数のあとがきを必要とし、決定するだけで必要ない場合ははいまたはいいえ文字列は400から499の範囲の数が含まれている、次のことができます。
だからあなたは次のような正規表現になってしまいます
regex = /(?:^|\D)4\d{2}(?:\D|$)/
または、ネガティブルックアヘッド/ルックビハインドを使用することによって:
regex = /(?<!\d)4\d{2}(?!\d)/
また、1400〜1499や4000〜4999などの番号(および400〜499が埋め込まれている3桁を超えるその他の番号)を除外するには、上記の手順1と4が必要です。その後String#match?
、新しいRubyバージョンで利用して、単純なブール値を取得できます。
string.match?(regex) # => true
string2.match?(regex) # => true
string3.match?(regex) # => false
string4.match?(regex) # => false
"1400".match?(regex) # => false
"400".match?(regex) # => true
"4000".match?(regex) # => false
"[1400]".match?(regex) # => false
"[400]".match?(regex) # => true
"[4000]".match?(regex) # => false
かなり単純な正規表現。単純なyesまたはnoが必要な場合は、一致を引き出して整数に変換する必要はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加