正则表达式匹配括号内的字母

时间:2017-05-27 07:12:55

标签: ruby regex

我需要编写一个正则表达式,匹配包含以下一个或多个子串的所有字符串(包括大括号):

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

我对正则表达式完全不熟悉。有人可以帮忙吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您没有指定您正在使用的语言/界面......一般来说:\{.*?\}。如果您只想匹配您提供的字符串,请将.*?替换为N{2,6}?

Ruby示例:

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