RegEx为“不以”开头“

时间:2013-05-16 03:24:07

标签: regex bash shell inequality

以下检查是否以“结束”开头:

if [[ "$line" =~ ^End ]]

我试图找出如何匹配不以“02/18/13”开头的内容。我尝试过以下方法:

if [[ "$line" != ^02/18/13 ]]

if [[ "$line" != ^02\/18\/13 ]]

它们似乎都不起作用。

3 个答案:

答案 0 :(得分:15)

bash没有“不匹配正则表达式”运算符;你可以否定(!)对“匹配正则表达式”运算符(=~)的测试:

if [[ ! "$line" =~ ^02/18/13 ]]

或使用“不匹配的字符串/ glob模式”运算符(!=):

if [[ "$line" != 02/18/13* ]]

Glob模式与正则表达式完全不同,令人困惑。在这种情况下,模式很简单,唯一的区别是整数字符串预期与整个字符串匹配,因此不需要锚定(事实上,它需要一个通配符来解除模式结束)。

答案 1 :(得分:4)

为什么不只是“如果不是”呢?

if ! [[ "$line" =~ ^02/18/13 ]]

答案 2 :(得分:1)

使用if!会做的。例: Say line =“1234” 在bash中使用此测试 -

if ! echo "$line" |grep -q "^:" > /dev/null; then echo "GOOD line does NOT begin with : "; else echo "BAD - line DOES begin with : "; fi

它将回复“GOOD line not not with:”