У меня есть код нижеTCL: . не работает, как ожидалось
set src "/tmp/16.10c.00.01/run.c"
regsub "\.c" $src ".o" obj
puts "$obj"
Она печати /tmp/16.1.o.00.01/run.c
как выход. , где в ожидаемом выходе /tmp/16.10c.00.01/run.o
. Если я сохраню его как "\.c$"
, он работает должным образом. Что не так в первом коде.
как является «.c» отличается от „\ .c“ – Rupesh
@Rupesh В регулярном выражении '.' соответствует любому одному символу (это подстановочные). Если вы хотите совместить точку, вам нужно избежать '.', потому что иначе она будет действовать как шаблон. – Jerry
Я понял, что вы пытаетесь сказать. Моя точка зрения заключается только в двойных кавычках. В двойных кавычках, чтобы избежать точки, мы должны положить «\». и, чтобы убежать, мы должны переписать его как «\\.». Я понимаю, что регулярное выражение «.c» и «\ .c» одинаково с точки зрения функциональности. Хотя они разные. Я прав? – Rupesh