如何使用正则表达式在多行中搜索模式

时间:2013-07-27 06:47:48

标签: tcl

考虑模式是:

PPP(GJ)  {
           __hj_o:
         }

正则表达式与上述模式匹配是什么?

1 个答案:

答案 0 :(得分:2)

Tcl的正则表达式可以很好地包含换行符,但对于任何复杂的东西,它可以帮助将它放在自己的变量中,而不是将其作为内联文字:

set RE {PPP(GJ)  {
           __hj_o:
         }}

if {[regexp $RE $someString]} {
    # We got a match!
}

事实上,regexp也会与上述内容相符:

set RE {PPP(GJ)\s+{\s+__hj_o:\s+}}

因为默认情况下换行符只是普通的空格字符(即\s.匹配)。 (上述RE可能不是您想要的;它们可能也需要适合非空白部分的模式。)

但是,您需要确保您要匹配的字符串具有您想要匹配的全部内容。如果您只是一次只通过一条线,那么多线模式将始终失败。这听起来很明显,但这是最容易犯的错误。