regex - 如何在grep中转义方括号内的方括号

标签 regex grep escaping regex-negation

我想匹配正则表达式中方括号以外的字符。

正是我想匹配一些特殊字符而其他一些不匹配,因此我想指定它们

# grep $'[^a-zA-Z0-9#\\/:!<>{},=?. ()["_+;*\'&|$-]' file

这缺少一个 ] ,我试过用 \] 转义, \\]等等,我读到人们在 [^] 之外这样做,但我需要它!

最佳答案

放置 ]紧接在 ^ 之后.

这是一个例子。输入文件“foo”包含:

foo
[
bar
]
baz
quux

我们执行命令:
grep '[^][]' foo

输出是:
foo
bar
baz
quux

来自 bracket expressions in POSIX regular expressions 上的文档:

The right-bracket ( ']' ) shall lose its special meaning and represent itself in a bracket expression if it occurs first in the list (after an initial circumflex ( '^' ), if any).



并且:

The special characters '.', '*', '[', and '\' (period, asterisk, left-bracket, and backslash, respectively) shall lose their special meaning within a bracket expression.

关于regex - 如何在grep中转义方括号内的方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635126/

相关文章:

java - 如何在模式编译时转义方括号?

python - 获取括号内的字符串

awk - 用键分隔行并存储在不同的文件中

javascript - 如何在 Node 中转义 shell 命令的字符串?

linux - 尝试使用随机结尾的 grep url

c# - 正则表达式否定问题

javascript - Jquery,使用变量转义 url

php - 在具有串联 PHP 变量的 SQL 语法中使用 REGEXP

c# - 为什么替代项的顺序在正则表达式中很重要?

javascript - 如何防止在文本字段中输入非数字?