Рейтинг:0

Тестирование регулярных выражений

флаг eg

Я пытаюсь изучить регулярные выражения и наткнулся на несколько примеров в Интернете. Пытаясь собрать вещи, я ввел это в bash

^(([aj][aj]?)|(3[aj][aj])$

Он возвращает следующую ошибку

bash: !!: событие не найдено.

Почему ты думаешь, что я это понимаю? Должен ли я создавать файлы j? или я должен создать 1 файл с a-j в нем? Почему он возвращает это? Спасибо за помощь.

флаг fo
Пожалуйста, покажите, как именно вы это использовали.Вырезать и вставить, если это возможно.
Smokefox avatar
флаг eg
Привет, Глен. Я просто тестировал его, как я вводил его выше. например Я проверил ^/([0-9])|([0-9])$ и получил другую ошибку «замена не удалась». Поэтому я просто пытаюсь понять суть этого. Я читал различные статьи о выражениях, но мне нужна помощь в понимании.
флаг fo
Так вы просто вводите это в командную строку bash? Что вы ожидаете? В bash регулярное выражение можно использовать только как часть условной команды `[[ $var =~ regex ]]`. См. [3.2.5.2 Условные конструкции] (https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs).
флаг ph
Синтаксис оболочки чрезвычайно зависит от контекста; bash будет рассматривать что-либо как регулярное выражение только в том случае, если оно встречается в том месте, где bash ожидает увидеть регулярное выражение (например, в `[[ $var =~ regex ]]`). Поскольку вы использовали это в общем командном контексте, bash увидел `^` и интерпретировал его как подстановку истории команд (т.е. он думает, что вы говорите ему вспомнить и повторно использовать некоторую часть предыдущей команды), потому что это то, что `^` означает общий контекст команды. Но ему не удалось найти соответствующую предыдущую команду («событие»), поэтому вы получаете ошибку «событие не найдено».
Smokefox avatar
флаг eg
@glennjackman спасибо, это ответ, который мне был нужен.
Smokefox avatar
флаг eg
@GordonDavisson Спасибо за раскрытие вопроса. Теперь я понимаю это лучше.
флаг us
Вы можете использовать https://regexr.com для игры с регулярными выражениями.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.