我有正则表达式:
@"\s*[\( \[ \{]\s*[a]\s*[n]\s*[\} \] \)]\s*"
在一个开始和结束大括号中检测一个字符串:( [ {
即使字符串中有任意数量的空格。
但问题是,如果不在括号内,它也会检测到'an'
。如何指示正则表达式检测字符串''只在一个开合括号内。
abc an abc
不匹配。
我想匹配字符串:
abc [ an ] abc
abc { a n } abc
abc ( a n ) abc
括号类型可以匹配吗?我的意思是,是否可以仅匹配具有与括号相同的右括号的那些?
答案 0 :(得分:3)
尝试删除方括号中的空格。它很可能与那些匹配。
@"\s*[\(\[\{]\s*[a]\s*[n]\s*[\}\]\)]\s*"
另外,FWIW,这种模式并不检查以确保括号相同。它会得到,例如[an}
或(an]
。
为此,您需要以下内容:
\(\s*a\s*n\s*\)|\{\s*a\s*n\s*\}|\[\s*a\s*n\s*\]
我确信这是一种更漂亮的方式,但它现在正在逃避我。
答案 1 :(得分:1)
试试这个:
^(\[ \( \{an\} \] \))$
这只允许跟随字符串:
[ ( {an} ] )