免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6327 | 回复: 6
打印 上一主题 下一主题

[文本处理] 请教正则表达式问题 [复制链接]

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
1 [报告]
发表于 2013-10-15 14:37 |显示全部楼层
yzkarchive 发表于 2013-10-15 14:13
文件内容: This is the (first) line

正则表达式:\([^)]*\),书本上说匹配第一个括号之前的内容,匹配 ...


可以匹配第1个)之前的内容:
  1. echo 'This is the (first) line This is the (first) line'|sed 's/\([^)]*\).*/\1/'         
  2. This is the (first
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
2 [报告]
发表于 2013-10-15 15:02 |显示全部楼层
yzkarchive 发表于 2013-10-15 14:48
回复 9# WilliBhamlll

那书本上说的第一部分”“\([^)]*\)”表示的是第一个括号之前的内容,比如上面的 ...


你那本书上所谓的第一个括号应该是指第1个)
  1. echo 'This is (the) (second) line'|sed 's/\([^)]*\).*/\1/'
  2. This is (the
复制代码
还有那条将括号中的内容替换成***的命令,执行报错,改了改。
  1. echo 'This is (the) (second) line'|sed ':b;s/\([^)]*\)\(([^)]*)\)\(.*\)/\1\***\3/;tb'
  2. This is *** *** line
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
3 [报告]
发表于 2013-10-15 15:51 |显示全部楼层
回复 13# yzkarchive


    建议你先看一下sed基础还有正则的知识。
  1. echo 'ab cdef ghigklmnopq'|sed 's/\([^c]\)c.*/\1/'
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
4 [报告]
发表于 2013-10-15 15:59 |显示全部楼层
yzkarchive 发表于 2013-10-15 15:55
回复 14# WilliBhamlll

正在看sed,看到b label的时候实在看不明白,所以来询问,从你的回答中\(和\)来 ...


可以看看tim大师的贴子,比较好理解。
http://bbs.chinaunix.net/thread-1762006-1-1.html

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
5 [报告]
发表于 2013-10-15 16:44 |显示全部楼层
本帖最后由 WilliBhamlll 于 2013-10-15 16:46 编辑
yzkarchive 发表于 2013-10-15 14:33
书本上内容摘录:

textfile内容为



之前没仔细看。刚刚一个朋友问我问题,再看看这里你贴的内容,书上说的是对的。顶楼贴的内容很容易让人误解。

\([^)]*\)\(([^)]*)\)\(.*\)这是那条命令里的正则部分,以第一部分([^)]*\)来看,的确是匹配第一个括号之前内容:
  1. echo 'This is (the) (second) line'|sed 's/\([^)]*\)\(([^)]*)\)\(.*\)/\1/'
  2. This is
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
6 [报告]
发表于 2013-10-15 16:58 |显示全部楼层
yzkarchive 发表于 2013-10-15 16:48
但是从正则表达式来看,只是匹配了不包含)的任意字符串,有点疑惑。


把第一部分写成\([^(]*\),可能会好理解一点。
第二部分\(([^)]*)\)把字面上意义的括号写进去了,所以第一部分是不可能匹配到括号的。

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
7 [报告]
发表于 2013-10-15 17:35 |显示全部楼层
LikeLx 发表于 2013-10-15 17:29
回复 22# WilliBhamlll
把字面意义上的括号写进去?  ...


\(([^)]*)\)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP