加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – Grep模糊嵌套方括号

发布时间:2020-12-14 05:55:47 所属栏目:百科 来源:网络整理
导读:sample.txt包含 abcdeabde 任何人都可以解释以下命令的输出 – grep'[[ab]]’sample.txt – 没有输出 grep'[ab []]’sample.txt – 无输出 grep'[ab []’sample.txt – 输出为abcde,abde grep'[ab]]’sample.txt – 没有输出 [(ab)]和[^(ab)]是什么意思?它
sample.txt包含

abcde
abde

任何人都可以解释以下命令的输出 –

> grep'[[ab]]’sample.txt – 没有输出
> grep'[ab []]’sample.txt – 无输出
> grep'[ab []’sample.txt – 输出为abcde,abde
> grep'[ab]]’sample.txt – 没有输出

[(ab)]和[^(ab)]是什么意思?它与[ab]和[^ ab]相同吗?

解决方法

首先要理解的是,在字符类中,正则表达式的元字符都没有任何特殊含义.它们字面上匹配.例如,*将匹配*并且不代表0或1重复.同样,()将匹配(和),并且不会创建捕获组.

现在,如果在字符类中找到了],则会自动关闭字符类,而另一个字符将不是该字符类的一部分.现在,让我们了解上面发生的事情:

在1,2和4中,您的角色类在第一次结束时结束.所以,最后一个结束括号 – ]不是字符类的一部分.它必须单独匹配.所以,你的模式将匹配如下:

'[[ab]]' is same as '([|a|b)(])'  // The last `]` has to match.
'[ab[]]' is same as '(a|b|[)(])'  // Again,the last `]` has to match.
'[ab]]'  is same as '(a|b|])(])'  // Same,the last `]` has to match.
    ^
    ^---- Character class closes here.

现在,因为在两个字符串中,最后都没有,因此找不到匹配.

然而,在第3种模式中,您的角色类仅由最后一个关闭].因此,一切都在角色类中.

'[ab[]' means match string that contains 'a',or 'b',or '['

这是完全有效的,并匹配字符串.

And what does [(ab)] and [^(ab)] mean?

[(ab)]表示匹配(,a,b,)中的任何一个.请记住,在角色类中,正则表达式的元字符没有任何特殊含义.因此,您无法在字符类中创建组.

[^(ab)]表示与[(ab)]完全相反.它匹配任何不包含任何指定字符的字符串.

Is it the same as [ab] and [^ab] ?

不.这两个不包括(和).因此他们没什么不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读