tcl正则表达式,试图在两个模式之间拉出一个字符串

时间:2016-07-24 22:16:00

标签: regex tcl

Gretings! 我试图使用tcl正则表达式去除不需要的字符并保留所需的字符串。

4种基本字符串类型是

I34/pAVDD_3
I32/pDVDD_15_2
I999/pAGND
I3/pDOUT_LG0

我想要捕获的是p和字符串结尾之间的内容或最后一个下划线&数字是否存在。使用上面的字符串,我想捕获AVDD,DVDD_15,AGND和DOUT_LG0。

我认为我已经使用了[p](\w*)?[_][\d*],但它不能与I3 / pDOUT_LG0一起使用,经过一段时间尝试不同的事情后,我无法找到可行的模式。

谢谢!

1 个答案:

答案 0 :(得分:0)

怎么样

regexp {p(?:(\w+)_\d|(\w+))$} $str -> c1 c2
set result $c1$c2

一个或另一个将为空,因此结果是它们的简单连接。

另一种可能的解决方案是剥离不需要的部分:

regsub -all {.+p|_\d$} $str {}

文档: regexpregsubSyntax of Tcl regular expressions