используя имена массивов в tcl, чтобы получить индексы, соответствующие регулярному выражению - PullRequest
0 голосов
/ 10 марта 2011

Следующий массив установлен в tcl

db(PR,)       =
db(PR,132754) = 5 6 7 8 9 10 11 12 13 14 31 32 33 34 35 36 37 38 39 40
db(PR,144917) = 2 3 28 29
db(PR,83055)  = 4 30

Я хочу, чтобы все индексы массива, кроме db (PR,), так как он не имеет ничего после запятой

Я пытался:

array names db -regexp PR,\d+

но это не дает выходных данных и имен массивов db -regexp PR, * PR, 144917 PR, 132754 PR, PR, 83055

возвращает нежелательный PR, индекс

Так как я могуисключить этот индекс массива из вывода имен массивов?

Ответы [ 2 ]

4 голосов
/ 10 марта 2011

А как насчет

array names db -regexp PR,.+

?

Респ.: Если после запятой всегда есть цифры (кроме db (PR,)), вы должны экранировать обратную косую черту

array names db -regexp PR,\\d+

или сделать

array names db -regexp PR,\[0-9]+
3 голосов
/ 10 марта 2011

Если критерий просто «должен быть чем-то после запятой», он может быть таким простым, как

array names db -regexp ,. 
array names db -glob *,?*  ;# alternative
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...