Как сопоставить определенный тип строки в Bash с помощью регулярных выражений - PullRequest
0 голосов
/ 20 марта 2019

Я хочу написать скрипт, который соответствует всему, что имеет либо символ из алфавита, число и подчеркивание. Возможные допустимые строки:

asd_asd
Asd_asd
asd_123
123_asd
123_aSD

и так далее. То, что я пробовал до сих пор:

if [[ "$LINE" =~ [a-zA-Z0-9_] ]]

Но это будет соответствовать любому символу, который содержит также любой из них:! @ # $% ^ & * () _ +} {|?> <`!, и другие странные символы. </p>

Я думал о помещении специальных символов в список и игнорировал строку, если она содержит один из символов в списке, но, боюсь, я могу пропустить один символ.

Что лучше делать в этом случае?

1 Ответ

5 голосов
/ 20 марта 2019

[a-zA-Z0-9_] соответствует только одному символу.Вам необходимо использовать шаблон, подобный следующему:

^[a-zA-Z0-9_]+$
  • ^ соответствует началу входной строки,
  • $ соответствует ее концу,
  • [...]+ соответствует одному или нескольким символам из класса символов (a-zA-Z0-9_ в приведенном выше шаблоне).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...