Какие RE могут использовать оператор = ~

На странице man для bash это говорит об операторе =~ :

Доступен дополнительный бинарный оператор, = ~, с тем же приоритетом, что и == и! =. Когда он используется, строка справа от оператора считается расширенным регулярным выражением и соответствующим образом соответствует (как в regex (3) )

Тем не менее, я считаю, что даже тривиальные RE не работают. Вот мой пример использования:

 n='hello' [[ "$n" =~ 'llo' ]] && echo yes || echo no # <-- yes [[ "$n" =~ 'llo$' ]] && echo yes || echo no # <-- no 

Учитывая, что $ является стандартным индикатором RE для EOL, почему второе сравнение возвращает «нет»?

One Solution collect form web for “Какие RE могут использовать оператор = ~”

Вы не читали страницу руководства тщательно, он также сказал:

Любая часть шаблона может быть процитирована, чтобы заставить цитированную часть соответствовать строке.

Таким образом, $ в вашей строке означает буквальный знак доллара вместо конца строки. Перемещение $ из строки, чтобы заставить ее работать:

 $ [[ "$n" =~ 'llo'$ ]] && echo yes || echo no yes 
  • Java комментарии regex: egrep "(/ \ * \ * | / * | \ * / | \ * \ * /)" text.txt
  • Как выбрать первое совпадение между двумя шаблонами, включая их
  • Удалить узел XML, содержащий определенный элемент
  • Сценарий Bash для копирования определенных каталогов с сопоставлением с образцом
  • Какой тип движка регулярного выражения использует bash?
  • Невозможно выполнить замену в программе sed
  • lookbehind и использовать его с grep в Vi?
  • Почему мне не нужно избегать класса символов в sed, но мне нужно избегать остальных?
  • Что такое тип регулярного выражения SELinux?
  • Замените все вхождения \ except \ N
  • sed - как исключить несколько шаблонов в матче
  • Linux и Unix - лучшая ОС в мире.