RegEx为"不以"开头"

dal*_*awh 7 regex bash shell inequality

以下检查是否以"结束"开头:

if [[ "$line" =~ ^End ]]
Run Code Online (Sandbox Code Playgroud)

我试图找出如何匹配不以"02/18/13"开头的东西.我尝试过以下方法:

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

if [[ "$line" != ^02\/18\/13 ]]
Run Code Online (Sandbox Code Playgroud)

他们似乎都没有工作.

Gor*_*son 16

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

if [[ ! "$line" =~ ^02/18/13 ]]
Run Code Online (Sandbox Code Playgroud)

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

if [[ "$line" != 02/18/13* ]]
Run Code Online (Sandbox Code Playgroud)

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


gil*_*spy 5

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

if ! [[ "$line" =~ ^02/18/13 ]]
Run Code Online (Sandbox Code Playgroud)