匹配模式的确切数量

时间:2015-01-07 07:55:38

标签: regex tcl

例如,我有以下字符串:

-----ABC-----

并使用

regexp {^[\-]+.*[\-]+} $string

可以匹配上面的字符串。但是,如果我想匹配固定数量的-,例如5次,怎么办?我试过了

regexp {^[\-]{5}.*[\-]{5}} $string

但它不起作用。

2 个答案:

答案 0 :(得分:2)

.*部分也与-匹配。我会改变它:

^-{5}[^-]*-{5}$

[^-]*表示“任何字符除了-。(如果是-,则无需将[]放入{{1}}只允许角色)

答案 1 :(得分:1)

假设不起作用你的意思是它也匹配:-----ABC--------------,你可以改变这个:{^[\-]{5}.*[\-]{5}}到这个:{^[\-]{5}[^-]*[\-]{5}$}

主要区别在于我指定的是中间部分,也就是说,示例中包含ABC的部分应该由短划线构成,因此它将匹配5从字符串的开头(^[\-]{5})开始破折号,然后是0个或更多字符 not 破折号([^-]*),接着是5个破折号和一个字符串终止符号( [\-]{5}$)。