2017-05-27 6 views
-1

Ich brauche einen regulären Ausdruck zu schreiben, die alle Strings für ein oder mehrere der folgenden Zeichenketten (einschließlich der geschweiften Klammern) enthält:Regulärer Ausdruck Buchstaben in Klammern entsprechen

{NN} 
{NNN} 
{NNNN} 
{NNNNN} 
{NNNNNN} 

Ich bin völlig neu zu regulären Ausdrücken . Kann jemand helfen?

+2

Mögliches Duplikat [Lernen Reguläre Ausdrücke] (https://stackoverflow.com/questions/4736/learning-regular-expressions) – jonrsharpe

Antwort

3
r =/
    \{  # match left brace 
    N{2,6} # match between 2 and 6 Ns 
    \}  # match right brace 
    /x  # free-spacing regex definition mode 

arr = %w|{N} {NN} {NNN} {NNNN} {NNNNN} {NNNNNN} {NNNNNNN} {NNMN}| 
    #=> ["{N}", "{NN}", "{NNN}", "{NNNN}", "cat{NNNNN}dog", "{NNNNNN}", 
    # "{NNNNNNN}", "{NNMN}"] 

arr.each { |s| puts "'#{s}'.match(r) = #{s.match?(r)}" } 
'{N}'.match(r) = false 
'{NN}'.match(r) = true 
'{NNN}'.match(r) = true 
'{NNNN}'.match(r) = true 
'cat{NNNNN}dog'.match(r) = true 
'{NNNNNN}'.match(r) = true 
'{NNNNNNN}'.match(r) = false 
'{NNMN}'.match(r) = false 
+0

Die Regex funktioniert wie ein Zauber, vielen Dank. – Tintin81

1

Sie haben keine Sprache/Schnittstelle angegeben, die Sie verwenden würden ... Im Allgemeinen: \{.*?\}. Ersetzen Sie .*? durch N{2,6}?, wenn Sie nur die Zeichenfolge übereinstimmen möchten, die Sie präsentierten.

Ruby-Beispiel:

if (content =~ /\{N{2,6}\}/) 
    puts "Content match!" 
end 
+0

Ich bin mit Ruby-on-Rails . – Tintin81

Verwandte Themen