【发布时间】:2018-11-10 21:50:29
【问题描述】:
Regex 适用于在线编辑器,但不适用于 bash 脚本。尝试了几种不同的方法
#!/bin/bash
echo -n "Your string> "
read String
regex='(?<!NOT.)TEST_34_TEST'
if [[ "$String" =~ ^(\?\<\!NOT\.)TEST_34_TEST ]]; then
echo Match
else
echo Non-Match
fi
if [[ "$String" =~ $regex ]]; then
echo Match
else
echo Non-Match
fi
我想要匹配 TEST_34_TEST 的字符串,并且它没有前缀
TEST_34_TEST,TEST_34_TEST,TEST_34_TEST -> should match all 3
TEST_34_TEST, NOT_TEST_34_TEST, TEST_34_TEST -> should match 2 values
NOT_TEST_34_TEST, TEST_34_TEST, TEST_34_TEST -> should match 2 values
提前致谢。
【问题讨论】:
-
BASH 正则表达式中没有环顾四周的支持
-
ok 有办法实现吗?
-
这可能会有所帮助:stackoverflow.com/a/21161095/3776858
-
bash无论如何都不会捕获单个组的多次出现。你可以匹配NOT_TEST_34_TEST,整个字符串要么匹配,要么不匹配。 -
这不会解决问题,因为它匹配其他字符串与 NOT_TEST_34_TEST 例如:TEST,TEST 将返回 true