我有一个正则表达式,我正在使用它,我试图匹配python中的表达式,但我是tcl的新手,似乎不能让正则表达式工作。
set string"abc08_batman"
set patternOne "abc.*Batman"
set patternTwo "abc\d+.*Batman"
set patternThree "abc\d{2}.*Batman"
if {[regexp -nocase $pattern $string c]} {
puts "Full Match 2: $c"
}
patternOne
工作,但不够好,patternTwo
是我更喜欢的,但他们不工作。
下面的工作,但我不能硬编码08
,因为这违背了使用正则表达式的目的。我现在被锁定到abc08
if {[regexp -nocase "abc08.*batman" $string c]} {
puts "Full Match: $c"
}
1条答案
按热度按时间siv3szwd1#
您需要将反斜杠加倍,以防止它被引号扩展所吞噬。
如果没有它,变量的内容是
abcd+.*Batman
,这并不奇怪为什么它不匹配。更好的是,使用大括号来避免在其中进行任何扩展或求值:
您需要重新理解the Tcl syntax rules,尤其是规则4、6和9。