TCL - получить список строк, разделенных пробелом в другой строке, используя регулярные выражения - PullRequest
4 голосов
/ 21 февраля 2011

Как написать регулярное выражение в TCL, которое соответствует слову и пробелам.Например, у меня есть

aaaa    bbbb    cccc       

, и я хочу соответствовать "aaaaa", "bbbb", "cccc".А также, пожалуйста, скажите мне, что является символом регулярного выражения для пробела и не пробела.Я нигде не могу его найти.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 февраля 2011

Я бы подумал просто о поиске групп символов слова:

set text {aaaa bbbb cccc}
regexp -all -inline {\S+} $text
> aaaa bbbb cccc

Вы можете найти запись для синтаксиса регулярных выражений Tcl на справочной странице re_syntax

2 голосов
/ 22 февраля 2011

Я не вполне точно уверен, что вы хотите, но вот пример:

set str "aaaa    bbbb    cccc       "
regexp {(\S+)\s+(\S+)\s+(\S+)} $str -> wordA wordB wordC
puts "The first is \"$wordA\", second \"$wordB\", and third \"$wordC\""

, который производит этот вывод:

Первый«aaaa», второй «bbbb» и третий «cccc»

В RE \S+ означает непустую последовательность непробельных символов, а \s+ означает непустая последовательность пробелов.Я мог бы использовать \w+ ("слово" символы) и \W+ ("не слово" символы) соответственно.Скобки в RE охватывают группы захвата;Tcl не требует, чтобы RE соответствовали всей входной строке.

0 голосов
/ 21 февраля 2011

Символом регулярного выражения для пробела является "".Как [az.] Дает вам пробел, а также точки и строчные буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...