怎么说"not an alphanumeric character",而不是"a non-alphanumeric character"



我想测试一个字符串是否包含单词ok

我最初想做的是写下这个正则表达式:

ok[^a-z]

这意味着在我想要的ok之后的下一件事可以是一些空白或标点符号,但不是字母数字字符,并且可以正确地区分okokay,只捕获ok

但是,如果我的整个输入字符串正好在ok之后结束,就会出现问题。[^a-z]要求存在另一个字符以得到满足。我不知道如何写一个条件,说不再有字符也是可以接受的。

期望结果:

  • ok-满足
  • ...ok...-满足
  • ok hello world-满足
  • hello world ok-满足
  • okay-不满足
  • o k-不满足

这将在Bash脚本中使用,根据本页,该脚本使用ERE regex方言。


预期用途示例:

if [[ "$@" =~ ok[^a-z] ]]; then
echo "Argument contains an "ok""
fi
正则表达式中的
  • w表示所有字母、数字和下划线
  • W表示相反:它不匹配字母、数字和下划线
  • $表示一行的末尾
  • (a|b)表示一个b
  • (?=)是一个积极的前瞻性,这意味着只有当后面的内容也匹配时才匹配(但实际上并没有捕捉到我们的前瞻性(

我们可以将所有这些组合起来,形成一个单一的正则表达式,以不匹配字母数字或行末

ok(?=W|$)-只有当我们向前看时,我们发现一个非字母数字或一行的末尾时,才匹配ok

相关内容

最新更新