Sometimes you need to match a literal (sub-)string with a regular expression despite that substring containing RE metacharacters. While yes, it's possible to write code to insert appropriate backslashes to make that work (using string map
) it is easiest to just prefix the pattern with ***=
, which makes the RE engine treat the rest of the string as just literal characters, disabling all further metacharacters.
set sampleText "This is some text with \[brackets\] in it."
set searchFor {[brackets]}
if {[ regexp ***=$searchFor $sampleText ]} {
# This message will be printed
puts "Found it!"
}
Note that this also means you can't use any of the anchors.