grep正则表达式匹配中括号的方法实例

 更新时间:2022年09月19日 10:17:44   作者:爱博客大伯  
正则中的括号有不同的意义,不同的字符在括号中也有不同的意义,下面这篇文章主要给大家介绍了关于grep正则表达式匹配中括号的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1. 匹配中括号,例如匹配 String[] args

$ echo "String[] args" | grep -Eo "[][0-9a-zA-Z ]+"
String[] args		(这一行是匹配到的结果)

(1)grep -E 加上 -E 表示采用正则表达式进行匹配。加 -o 参数,表示只输出匹配到的部分。

(2)正则表达式中,表示 Character class (字符组)的中括号:即下面例子中最外层的中括号,例如 [0-9]+ 匹配一个或多个 0 到 9 的数字,[0-9a-z]+ 匹配一个或多个 0 到 9、小 a 到 小 z 的字符。

(3)在字符组中使用中括号,也就是说在中括号里还有中括号。 匹配中括号 [ ]时,需要把中括号放到字符组的最前面,且] 在前,[在后。(如下面例子中的 [][0-9a-zA-Z ]+

echo "String[] args" | grep -E "[[]0-9a-zA-Z ]+" 这样是不匹配 String[] args 的。

[ 可以匹配到左中括号,例如,这种形式 [0-9a-zA-Z []+ 可以匹配到左中括号,无法匹配右中括号:

$ echo "String[] args" | grep -Eo "[0-9a-zA-Z []+"
String[		(这一行是匹配到的结果)
 args		(这一行是匹配到的结果)

说明:加 -o 参数,表示只输出匹配到的部分。可以看到只匹配到了 String[,没有右中括号。

其他情况的输出结果:

$ echo "String[] args" | grep -Eo "[0-9a-zA-Z []]+"
[]		(这一行是匹配到的结果)

说明:这个正则表达式 [0-9a-zA-Z [[]]+ 实际被解释为 [0-9a-zA-Z [[]]+ 了。[0-9a-zA-Z [[] 匹配左中括号,接着是 ]+ 匹配右中括号。

$ echo "String[] args" | grep -Eo "[]0-9a-zA-Z []+"String[] args(这一行是匹配到的结果)$ echo "String[] args" | grep -Eo "[]0-9a-zA-Z []+"
String[] args		(这一行是匹配到的结果)

说明:[]0-9a-zA-Z []+ 是可以匹配 String[] args 的,需要把 ] 放到最前面。[ 放到后面也可以。

注意:一定要加 -o 参数。

2. 匹配大括号,例如匹配 {abc 123}

大括号 { } 在中括号中没有顺序关系。也不用必须放在中括号的最前面。

这几种形式都可以: [}{0-9a-zA-Z ]+[{}0-9a-zA-Z ]+[0-9a-zA-Z {}]+[0-9a-zA-Z }{]+

$ echo "{abc 123}" | grep -Eo "[}{0-9a-zA-Z ]+"
{abc 123}		(这一行是匹配的结果)

$ echo "{abc 123}" | grep -Eo "[{}0-9a-zA-Z ]+"
{abc 123}		(这一行是匹配的结果)

3. 同时匹配中括号和大括号,例如匹配 new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}

[][}{0-9a-zA-Z, ]+[][{}0-9a-zA-Z, ]+[]}{0-9a-zA-Z[, ]+[]}{0-9a-zA-Z, []+[]0-9a-zA-Z[, {}]+[]0-9a-zA-Z, {}[]+ 都可以。

中括号中的 ] 在前,[在后,即 ][

大括号 { }先后没有关系。

$ echo "new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}" | grep -Eo "[][}{0-9a-zA-Z, ]+"
new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}		(这一行是匹配的结果)

$ echo "new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}" | grep -Eo "[][{}0-9a-zA-Z, ]+"
new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}		(这一行是匹配的结果)

$ echo "new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}" | grep -Eo "[]}{0-9a-zA-Z[, ]+"
new byte[]{6, 55, 73, 72, 0, 0x60, 0x77}

4. 总结

(1)匹配字符组中的中括号时(中括号里的中括号),] 需要在最前面,[ 的位置可以放在中间或者最后面。

(2)用 [ 或者 [[ 都可以匹配左中括号。

(3)匹配字符组中的大括号,此时大括号没有特殊含义,所以 { }的位置可以随意一些(但不要破坏其他区间)。

5. 参考

https://stackoverflow.com/questions/30044199/how-can-i-match-square-bracket-in-regex-with-grep

[…] If a bracket expression specifies both ‘-’ and ‘]’, the ‘]’ shall be placed first (after the ‘^’, if any) and the ‘-’ last within the bracket expression.
Therefore, your regex should be:
echo "fdsl[]" | grep -Eo "[][ a-z]+"

总结

到此这篇关于grep正则表达式匹配中括号的文章就介绍到这了,更多相关grep正则匹配中括号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在实际例子中学习正则表达式(高效率)

    在实际例子中学习正则表达式(高效率)

    正则表达式,又称正规表示法、常规表示法。下面小编给大家分享几个例子给大家讲下正则表达式知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • layui 正则表达式验证使用实例详解

    layui 正则表达式验证使用实例详解

    layui的正则表达式是在form表单中完成的,这篇文章主要介绍了layui 正则表达式验证使用教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • WEB开发时常用的正则表达式(PHP和Javascript)

    WEB开发时常用的正则表达式(PHP和Javascript)

    这篇文章主要介绍了WEB开发中最常用最实用的正则表达式及其用法,需要的朋友可以参考下
    2015-10-10
  • asp的ubb函数(推荐)

    asp的ubb函数(推荐)

    asp的ubb函数(推荐)...
    2006-06-06
  • 浅析正则表达式

    浅析正则表达式

    所谓的正则表达式,就是用一类元字符(不表示本身意义,而表示统配或其他意义),组合其他字符所编数出来的,能够匹配符合条件的字符
    2013-09-09
  • 正则表达式简介及在C++11中的简单使用教程

    正则表达式简介及在C++11中的简单使用教程

    正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。接下来通过本文给大家介绍正则表达式简介及在C++11中的简单使用教程,一起通过本文学习吧
    2017-02-02
  • 浅谈正则表达式 实例入门

    浅谈正则表达式 实例入门

    这些都是 javascript 正则表达式的基本方法,如果你看会了看复杂的正则你会有豁然开朗的感觉。
    2010-03-03
  • 利用js正则表达式校验正数、负数、和小数

    利用js正则表达式校验正数、负数、和小数

    本文主要介绍了怎样利用js正则表达式校验正数、负数、和小数的具体实现代码,具有一定的参考价值。需要的朋友可以看下
    2016-12-12
  • JS正则表达式匹配检测各种数值类型(数字验证)

    JS正则表达式匹配检测各种数值类型(数字验证)

    这篇文章主要介绍了JS正则表达式匹配检测各种数值类型(数字验证)的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2016-08-08
  • 正则表达式中最短匹配模式的用法浅析

    正则表达式中最短匹配模式的用法浅析

    最短匹配应用于:假如有一段文本,你只想匹配最短的可能,而不是最长。下面这篇文章主要给大家介绍了关于正则表达式中最短匹配模式用法的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07

最新评论