免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: r2007
打印 上一主题 下一主题

[练习]匹配包含"-^[]'这些字符的正则怎么写? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-10-10 15:21 |只看该作者
打基础来了

论坛徽章:
0
12 [报告]
发表于 2006-10-10 16:07 |只看该作者
原帖由 waker 于 2006-3-30 16:23 发表
JB上的规则是
]要放在第一个
-放最后一个
^不能放第一个

这个算吗

  1. grep '[''"''-''^'"'""[""]"']'
复制代码

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
13 [报告]
发表于 2006-10-10 16:18 |只看该作者
原帖由 lovesaka 于 2006-10-10 16:07 发表

这个算吗

  1. grep '[''"''-''^'"'""[""]"']'
复制代码

这个不对,应该按照waker给的规则写,楼上的可以自己试一下,看能否匹配成功。

[ 本帖最后由 r2007 于 2006-10-10 16:20 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2006-10-10 16:26 |只看该作者

  1. minuit@suse:~/shell/temp> grep '[][^-]' 1.txt
  2. asdfkj"-^[]'
  3. "-^[]'
  4. ww"-^w[]klgsdf
  5. minuit@suse:~/shell/temp> grep '[''"''-''^'"'""[""]"']' 1.txt
  6. asdfkj"-^[]'
  7. "-^[]'
  8. ww"-^w[]klgsdf
  9. minuit@suse:~/shell/temp> cat 1.txt
  10. w23fkjgiasfjkl
  11. asdfkj"-^[]'
  12. "-^[]'
  13. ww"-^w[]klgsdf
  14. gsdflgjdslf
复制代码

我不知道版主你要的精确的结果也就是只有这些字符的结果行还是包这些字符的行

论坛徽章:
0
15 [报告]
发表于 2006-10-10 16:33 |只看该作者

  1. minuit@suse:~/shell/temp> grep '[''"''-''^'"'""[""]"']' 1.txt
  2. + grep '["-^'\''[]]' 1.txt
  3. asdfkj"-^[]'
  4. "-^[]'
  5. ww"-^w[]klgsdf
  6. minuit@suse:~/shell/temp>
复制代码

这是set -x看的解析结果

论坛徽章:
0
16 [报告]
发表于 2006-10-10 16:40 |只看该作者
或许是匹配了"-^[]' 中的某一个,因为匹配行都有 "-^[]' 。

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
17 [报告]
发表于 2006-10-10 16:43 |只看该作者
原帖由 lovesaka 于 2006-10-10 16:26 发表

minuit@suse:~/shell/temp> grep '[][^-]' 1.txt
asdfkj"-^[]'
"-^[]'
ww"-^w[]klgsdf
minuit@suse:~/shell/temp> grep '[''"''-''^'"'""[""]&q ...

请问楼上想匹配什么?是不是包含 “-^'[] 的任意字符?
如果是应该这样写
  1. grep '[]"^'\''[-]'
复制代码


  1. grep '[''"''-''^'"'""[""]"']'
复制代码

其实就是
  1. grep '["-^'\''[]]'
复制代码

即匹配 "至^以及'[ 中任意一个,然后外加一个]字符

[ 本帖最后由 r2007 于 2006-10-10 16:44 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2006-10-10 17:06 |只看该作者
[ling@test1]>grep '[''"''-''^'"'""[""]"']' bb
asdfkj"-^[]'
"-^[]'
"]
"^-]['
ww"-^w[]klgsdf
[ling@test1]>cat bb
w23fkjgiasfjkl
asdfkj"-^[]'
"-^[]'
"]
]
"^-]['
ww"-^w[]klgsdf
gsdflgjdslf
www-
eqqq^
weqq[
adfa]
wqqqq"
weqqq'

论坛徽章:
0
19 [报告]
发表于 2006-10-10 17:15 |只看该作者
其实我只想说一下没有什么按顺序先放哪后放哪的说法
如果要匹配包涵版主你所讲的全部字符的行少一个都不行的下面有一个

  1. grep '[''"''-''^'"[""]"']'"'"   这个写得太长但效果还是和下面一样向r2007版主所说有bug
  2. grep '["-^[]]'"'"      
  3. grep '^"-^[[][]]'"'"'$'       这个是精确匹配 "-^[]' 的行
  4. grep '[^'"'"'][-"]'               非精确的只要有 "-^[]' 就行
复制代码

[ 本帖最后由 lovesaka 于 2006-10-10 22:31 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2006-10-10 17:27 |只看该作者
粉复杂的说。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP