例如,我有以下字符串:
-----ABC-----
并使用
regexp {^[\-]+.*[\-]+} $string
可以匹配上面的字符串。但是,如果我想匹配固定数量的-
,例如5次,怎么办?我试过了
regexp {^[\-]{5}.*[\-]{5}} $string
但它不起作用。
答案 0 :(得分:2)
.*
部分也与-
匹配。我会改变它:
^-{5}[^-]*-{5}$
[^-]*
表示“任何字符,除了-
。(如果是-
,则无需将[]
放入{{1}}只允许角色)
答案 1 :(得分:1)
假设不起作用你的意思是它也匹配:-----ABC--------------
,你可以改变这个:{^[\-]{5}.*[\-]{5}}
到这个:{^[\-]{5}[^-]*[\-]{5}$}
主要区别在于我指定的是中间部分,也就是说,示例中包含ABC
的部分应该不由短划线构成,因此它将匹配5从字符串的开头(^[\-]{5}
)开始破折号,然后是0个或更多字符 not 破折号([^-]*
),接着是5个破折号和一个字符串终止符号( [\-]{5}$
)。