2016-02-26 3 views
1

Я извлеченная некоторые данные из табличной колонки с использованием «lsearch» и теперь имеет переменную TCL как этогоКак использовать регулярное выражение, чтобы захватить элементы TCL строки

{  1  no8 MASTER (UP-DOWN) ABCD  1456 /clown  F right_left_123 /local/opt/data WXYZ (M5,N6)   } 

Как я могу теперь использовать «регулярное выражение» взять каждое из этих значений в отдельные переменные? Я думаю, мне придется фильтровать по пространству, но пустое пространство между этими значениями является переменным. Также я новичок «regexp».

Я пробовал использовать «lindex», но выглядит как весь элемент в индексе 0. Пожалуйста, дайте мне знать, что является самым простым способом.

+2

Не использовать регулярное выражение. Помните это правило при работе в Tcl: используйте строковые команды для строк и списки команд в списках. Это действительно упростит вашу жизнь. –

+0

Используйте 'regexp' для синтаксического анализа строк из _outside_ Tcl, но после того, как вы получили значение изнутри Tcl, обычно лучше подходят подходы (так как это обычно список или словарь). –

ответ

2

lsearch, вероятно, вернул список, содержащий этот 1 элемент. Если вы хотите получить элементы внутри этого элемента, используйте второй указатель, чтобы перейти на 1 уровень глубже:

# suppose the list in in the variable $l 
puts [lindex $l 0 0] 
# => 1 
puts [lindex $l 0 1] 
# => no8 
+0

Ах, не знал, что вы можете использовать второй индекс для захвата данных из списка с одним индексом. Благодаря! – user2045143

+0

@ пользователь2045143 Yup! И вы можете добавить больше, если список глубже. – Jerry

+1

@ user2045143, вам понадобится ссылка на [прекрасная документация] (http://tcl.tk/man/tcl8.6/TclCmd/contents.htm) - проверьте команду 'lassign', пока вы находитесь в там, я думаю, это будет подходящим для того, что вы делаете. –