Ответ 1
Вы можете использовать \
перед пробелами.
#!/bin/bash
text="This is just a test string"
if [[ "$text" =~ ^This\ is\ just ]]; then
echo "matched"
else
echo "not matched"
fi
Как мне выполнить регулярное выражение, как показано ниже, но с кавычками вокруг ( "^ This" ), как в реальном мире. "This" будет строкой, в которой могут быть пробелы.
#!/bin/bash
text="This is just a test string"
if [[ "$text" =~ ^This ]]; then
echo "matched"
else
echo "not matched"
fi
Я хочу сделать что-то вроде
if [[ "$text" =~ "^This is" ]]; then
но это не соответствует.
Вы можете использовать \
перед пробелами.
#!/bin/bash
text="This is just a test string"
if [[ "$text" =~ ^This\ is\ just ]]; then
echo "matched"
else
echo "not matched"
fi
Мне не удалось встроить выражение следующим образом:
if [[ "$text" =~ "^ *This " ]]; then
но если вы поместите выражение в переменную, вы можете использовать обычный синтаксис regex, например:
pat="^ *This "
if [[ $text =~ $pat ]]; then
Обратите внимание, что цитирование на $text
и $pat
непрозрачно.
Edit: Удобный oneliner во время разработки:
pat="^ *This is "; [[ " This is just a test string" =~ $pat ]]; echo $?
Можете ли вы сделать описание проблемы более понятным?
text="This is just a test string"
case "$text" in
"This is"*) echo "match";;
esac
выше предполагалось, что вы хотите совместить "Это" при точном начале строки.
Вы пробовали:
^[\s]*This