Регулярное выражение Tcl: Как проверить, содержит ли переменная число?

Скорее всего, в разрешениях для каталога .gnupg отсутствуют разрешения x , что позволяет переходить к файл gpg.conf и его видимость.

Попробуйте следующее:

sudo chmod u+x /home/ubuntu/.gnupg
1
16.05.2017, 18:48
3 ответа

Вы также можете использовать шаблоны в стиле glob, чтобы решить эту проблему, не прибегая к мощности регулярных выражений:

if {[string match {*[0-9]*} $a]} { ...

См. документацию сопоставление строк .

0
27.01.2020, 23:24

Это потому, что вы используете регулярное выражение, которое означает "совпадение 0 или более чисел". Строка abc соответствует 0 числам, поэтому вы получаете положительный результат. Просто удалите * ("0 или больше") и все должно работать как положено:

set a "a2bc"

if {[ regexp {[0-9]} $a ]} {
        puts "Found number in $a"
} else {
        puts "Doesn't find number in $a"
}
2
27.01.2020, 23:24

В регулярном выражении *означает «ноль или более ранее указанных символов или классов».Итак, вы ищете любую строку с нулем или более числовых символов. Что соответствует всему.

1
27.01.2020, 23:24

Теги

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