Как сделать все без исключения прописные и строчные буквы в tcl regsub?

#tcl #youtube-dl #regsub

Вопрос:

Я хочу зарегистрироваться без исключения, чтобы не удваивать, я делаю регистрацию.

пример перед:
regsub -all "feat" $songtitle "" songtitle
regsub -all "Feat" $songtitle "" songtitle

Я хочу простую одну строку для regsub:
regsub -all "feat" $songtitle "" songtitle

Это немного неудобно, если есть много слов, которые я хочу прописать, я хочу, чтобы это было просто, без исключений в описании, чтобы только одна строка каждого слова была прописной, а не две строки для прописных и строчных букв. Спасибо

Ответ №1:

Вы можете указать -nocase опцию regsub , чтобы заставить его игнорировать регистр при сопоставлении.

 regsub -all -nocase {feat} $songtitle "" songtitle
 

Вы также можете включить этот режим работы, поставив (?i) маркер в начале повторного:

 regsub -all {(?i)feat} $songtitle "" songtitle
 

Вероятно, вам также следует добавить некоторые y (ограничение на границы слов) в этот параметр, чтобы он не превратился defeated в deed :

 regsub -all {(?i)yfeaty} $songtitle "" songtitle
 

(Как только вы добавляете в RE обратную косую черту или квадратные скобки, в Tcl очень важно, чтобы вы вставляли RE в фигурные скобки. В противном случае вы в конечном итоге используете отвратительно большое количество обратных косых черт…)

Ответ №2:

Также имейте в виду string map команду:

 string map {feat "" Feat ""} $songtitle
 

Полезно, когда вам на самом деле не нужны регулярные выражения.