не удалось скомпилировать шаблон регулярного выражения: операнд квантификатора недействителен при попытке подстроки в tcl с regexp

Да, на самом деле все будет хорошо. Grep, и большинство команд Unix работают по потокам по одной строке за раз. Каждая строка, которая выходит из хвоста, будет анализироваться и передаваться, если она соответствует.

0
задан Bebe 13 July 2018 в 18:05
поделиться

1 ответ

Механизм regex Tcl не поддерживает lookbehinds (которые ужасно дороги), поэтому он не может разобрать выражение.

Если вы знаете, что есть запятая, вы можете сделать то же самое проще by

string range $line [string last , $line]+1 end

или

regexp {[^,]+$} $line var

или

regexp {\w+=\w+$} $line var

Если может не быть запятой, и вы хотите получить строку, только если является запятой, используйте

if {[set idx [string last , $line]] >= 0} {
    set var [string range $line $idx+1 end]
}

или

regexp {,([^,]+)$} $line -> var

Здесь вы получаете два результата: полное совпадение переходит в переменную ->, и захваченный текст переходит в переменная var. Ни одно из них не изменится, если нет совпадения.

2
ответ дан Peter Lewerin 17 August 2018 в 12:17
поделиться
  • 1
    lindex [split $line ","] end может быть другой альтернативой в зависимости от данных OP. – Jerry 16 July 2018 в 05:40
  • 2
    @Peter Lewerin Спасибо regexp {, ([^,] +) $} $ line - & gt; editParam работал – Bebe 16 July 2018 в 15:17
Другие вопросы по тегам:

Похожие вопросы: