Там может быть много способов. Я попытался с regsub
set str {"TCL is known as "tool command language", TCL is known as "tool command language", TCL is known as "tool command language""}
puts "Input : $str"
regsub -all {(.)"} $str {\1} output
puts "Output : $output"
, который будет производить следующее
Input : "TCL is known as "tool command language", TCL is known as "tool command language", TCL is known as "tool command language""
Output : "TCL is known as tool command language, TCL is known as tool command language, TCL is known as tool command language"
Узор Я использовал это (.)"
. В регулярных выражениях атом .
будет соответствовать любому одиночному символу. (Будет говорить об использовании скобок внизу). Затем одна цитата. Итак, в основном, это будет соответствовать любому одиночному символу и рядом с ним, как показано ниже.
Как вы можете видеть, у нас есть в общей сложности 6 матчей. Возьмем 2-й матч, который равен e"
. Наша главная цель - удалить цитаты. Но мы подобрали 2 символа. Вот почему мы сгруппировали его с круглыми скобками.
С Tcl
мы можем получить доступ к 1-й подгруппе с помощью \1
и 2-й подгруппы с \2
и так далее. Наконец, мы заменяем 2 символа одним символом, который является ничем иным, кроме первой буквы, кроме цитаты. то есть e"
заменяется символом e
.
Обратите внимание на использование флага -all
в начале, который отвечает за соответствие всем случаям этого образца.
Примечание:\1
следует использовать фигурные скобки, как {\1}
, как я уже упоминал. В случае, если вы хотите получить к нему доступ без скобок, вы должны использовать \\1
Код: Non-capturing subpatterns
Привет, динешь, не могли бы вы рассказать мне, как его соответствие в шесть раз, а затем как его заменить на этот шаблон? – velpandian
@velpandian: Я обновил свой ответ. Пожалуйста, проверьте. – Dinesh
Dinesh благодарит за ваш быстрый ответ, как вы сказали (.) «Будет соответствовать любому персонажу», должен быть там. Мой вопрос в том, что если вы видите конец строки ввода, заканчивающийся на языке "", поэтому здесь должно быть 2 совпадения в этой конкретной области e "и", но мы получаем 1 совпадения в этой области, не могли бы вы пояснить это part .. Спасибо – velpandian