考虑模式是:
PPP(GJ) {
__hj_o:
}
什么是正则表达式匹配上述模式?
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
and匹配.
)。(上面的 RE 可能并不完全是您想要的;它们可能也需要适合非空白部分的模式。)
但是,您需要确保要匹配的字符串具有您想要匹配的全部内容。如果您一次只输入一条线,则该多线模式将始终失败。这听起来很明显,但这是最容易犯的错误。