В чем разница между [0 -9]{3} и [0 -9]<пробел>{3} в RegEx?

Похоже, это исправлено в CentOS 7, теперь можно добиться разблокировки с помощью любой команды независимо от метода блокировки

++Кто-то упомянул, что эти 2 команды делают разные вещи -одна блокирует пароль, а другая блокирует учетную запись пользователя, НЕ верно :passwd -S (имя пользователя )будет отображать LK в обоих сценариях (usermod -L (имя пользователя )И пароль -l (имя пользователя))

Блокировка учетной записи пользователя с помощью :изменение -E 0 (имя пользователя)

-3
26.01.2021, 01:25
2 ответа

Отказ от ответственности :Я не пытался анализировать ваше регулярное выражение. Вот ответ на ваш вопрос.

[0-9]{3}означает ровно три десятичных знака. [0-9] {3}означает одну десятичную цифру, за которой следуют ровно три пробела. Это так, потому что {3}(, который является так -называемым «связанным», )повторяет предшествующий ему так -называемый «атом».

Со страницы руководства по регулярным выражениям:

$ man regex
... An atom followed by a bound containing one integer i and no comma 
matches a sequence of exactly i matches of the atom....

Термин «атом» определяется в следующем абзаце. Отличное чтение.

4
18.03.2021, 22:34

Единственные известные мне регулярные выражения, в которых можно игнорировать пробелы, — это perl или совместимые и ast -открытые (, которые действительно заимствовали многие операторы из perl-регулярных выражений ), хотя это не делается по умолчанию., только если установлен флаг x.

Насколько мне известно, только ssedподдерживает PCRE с опцией -R.

Так что вам нужно:

ssed -R 's/ \d {3}/.../gx'
ssed -R 's/(?x) \d {3}/.../g'

Или (ast -open sed, который также является sedвстроенным в ksh93, если включен):

ast-sed    's/\(?x\) \d \{3\}/.../g'
ast-sed -E 's/(?x) \d {3}/.../g'
ast-sed -A 's/(?x) \d {3}/.../g'

(для 3 разновидностей регулярного выражения он поддерживает :базовый, расширенный, дополненный ).

Когда флаг xвключен, для соответствия буквальному символу пробела вам необходимо [ ]или поставить перед пробелом префикс\(или использовать \x20в системах на основе ASCII ).

1
18.03.2021, 22:34

Теги

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