我需要编写一个正则表达式,匹配包含以下一个或多个子串的所有字符串(包括大括号):
{NN}
{NNN}
{NNNN}
{NNNNN}
{NNNNNN}
我对正则表达式完全不熟悉。有人可以帮忙吗?
答案 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