2
я увидел ре так:Какое следующее регулярное выражение пытается совместить?
regexp "hello\[^\\n]*06" $str
, что это \[^\\n]*
пытается соответствовать?
я увидел ре так:Какое следующее регулярное выражение пытается совместить?
regexp "hello\[^\\n]*06" $str
, что это \[^\\n]*
пытается соответствовать?
В tcl строки, сгруппированные по двойным кавычкам (""
), подвергаются замене при оценке. Как вы знаете, TCL понимает следующие замены:
$
знака заменяется на ее значение.[
и ]
рассматривается как инструкция, а первое слово вызывается как команда (функция).\
) обрабатывается как escape-последовательность и соответственно заменяется.Таким образом, следующий код:
regexp "hello\[^\\n]*06" $str
эквивалентно:
regexp {hello[^\n]*06} $str
Так он пытается соответствовать строку, которая содержит слово "привет" и "06" без каких-либо между ними.
Вы уверены, что «\» перед «[»? Странно. Это похоже на ошибку. –
Это должна быть опечатка или попытка тролля, она должна быть '[^ \\ n] *', что означает совпадение с чем-либо, кроме '\ n' (line feed), ноль или более раз. – HamZa
Уверен, что есть «\» перед «[» – user2131316