与egrep的正则表达式

时间:2017-06-19 19:24:12

标签: regex linux bash grep

有人可以帮我理解以下的正则表达式吗?

egrep $'[^][0-9A-Za-z`~!@#$%^&*()_+=[{}|\\;:",.<>/? \'-]' testfile.txt

感谢。

1 个答案:

答案 0 :(得分:0)

关注正则表达式

[^][0-9A-Za-z`~!@#$%^&*()_+=[{}|\\;:",.<>/? \'-]

装置

  • 文字^,因为在[]之间,否则是行锚
  • 集合中的任何字符:
    • 0-9(任何数字)
    • A-Z任何大写字母
    • a-z任何小写字母
    • 以下任何一项 `〜!@#$%^&amp; *()_ + = [{} | \;:“,。&lt;&gt; /?' -
编辑:我的回答太快,我无法查看egrep。 事实上,集合中的第一个字符是^,所以它否定了集合。可以从字面上理解下一个字符]。 这个表达是不明确的,取决于实现。 必须添加第一个右括号]之前的反斜杠以修复歧义。 还有2个左括号[

它应该匹配任何包含不在指定集合中的字符的行:所以ascii字符在0到31之间,以及127.

检查 https://www.tutorialspoint.com/execute_bash_online.php 和复制

egrep $'[^][0-9A-Za-z`~!@#$%^&*()_+=[{}|\\;:",.<>/? \'-]'

最容易检查的是输入一个制表符,后跟一个可打印的charfor例如<tab>.或一个非ascii字符,例如¤§