. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
yugliu
 
yugliu 的头像
超级会员
 
资 料:
注册日期: Apr 2000
帖子: 1,191 声望值: 3
精华: 1,解答: 2
#16 旧 2013-10-01, 18:46:44 默认
yugliu 当前离线  

6、如何将含有 第xx章 的行同时全部选中,或者提取复制到粘贴板。

grep -E "第[0-9]+章" novel.txt

做这些处理,还是用 Linux 系统好。实在不行就来个 cygwin 。


Nothing is impossible <----> Anything is possible
dropbox invitation: hxxp://db.tt/9t8tsEG6
回复时引用此帖
MacOS
 
MacOS 的头像
热心会员
 
资 料:
注册日期: Aug 2002
帖子: 13,448 声望值: 5
精华: 0,解答: 129
#17 旧 2013-10-01, 18:48:59 默认
MacOS 当前离线  

都不能,有步骤操作都不是正则能做的,先看看WIKI的语法描述吧,大概来说,这是一种只限本次有效的正顺序匹配方式,5必须用其他算法轮询编号,6可以用AWK之类的输出程序将获取结果输出到文件或回显


HIDDEN MESSAGE LEVEL 3
14863 159357 789 159357 3245687 3684
回复时引用此帖
yugliu
 
yugliu 的头像
超级会员
 
资 料:
注册日期: Apr 2000
帖子: 1,191 声望值: 3
精华: 1,解答: 2
#18 旧 2013-10-01, 18:49:21 默认
yugliu 当前离线  

引用:
作者: nicol 查看帖子
(首)[\s\S]+?(尾)然后替换成\1\2,中间的就删掉了这个要看各个编辑器的功能了,正则只能匹配,替换要看编辑器你这个要求就是把青年组分成(青年)(组),替换的时候\1\2就行,中间插入计数器,我不知道那个编辑器支持这种第\d+章[^\n]+这样就行了吧如果是汉字数字的话就这样: 第[一二三四五六七八九十]+章[......

要求是 "同时全部选中"
如果只是正则,如何同时选出所有匹配项,并复制出来...
回复时引用此帖
nicol
 
nicol 的头像
热心会员
 
资 料:
注册日期: Jun 2001
帖子: 11,683 声望值: 6
精华: 0,解答: 11
#19 旧 2013-10-01, 18:57:18 默认
nicol 当前离线  

引用:
作者: yugliu 查看帖子
要求是 "同时全部选中"
如果只是正则,如何同时选出所有匹配项,并复制出来...
所以我说正则的工作是匹配啊,同时、全部、复制什么的就看各个编辑器了,呵呵


如果不嫌麻烦用regexbuddy楼主的要求4和6是可以实现的,5应该是没有编辑器支持插入计数器
回复时引用此帖
yugliu
 
yugliu 的头像
超级会员
 
资 料:
注册日期: Apr 2000
帖子: 1,191 声望值: 3
精华: 1,解答: 2
#20 旧 2013-10-01, 18:59:38 默认
yugliu 当前离线  

5.如何将匹配的第一处位置标记为1,第n处标记为n。如所有找到的"青年组"按匹配顺序替换为"青年1组""青年2组"。这个比较有用

这个只能用程序实现,关键是替换结果中有一个是变值,一般软件不支持。或者用编辑器里的宏试试。
回复时引用此帖
river01
 
river01 的头像
核心会员
 
资 料:
注册日期: Dec 2002
帖子: 2,652 声望值: 3
精华: 0,解答: 6
#21 旧 2013-10-01, 22:13:53 默认
river01 当前离线  

5•我在想当替换后会统计出共替换xx处,是不是每替换一次都有计数器?
6•换个思路用4的方法把不含第XX章的行全删除行不?

此帖于 2013-10-01 22:17:15 被 river01 编辑. .
回复时引用此帖
nicol
 
nicol 的头像
热心会员
 
资 料:
注册日期: Jun 2001
帖子: 11,683 声望值: 6
精华: 0,解答: 11
#22 旧 2013-10-01, 23:54:28 默认
nicol 当前离线  

引用:
作者: river01 查看帖子
5•我在想当替换后会统计出共替换xx处,是不是每替换一次都有计数器?
6•换个思路用4的方法把不含第XX章的行全删除行不?
5. 这个要看软件,目前应该没有编辑器支持替换的时候插入变量的,最接近你的列子的是TC的批量重命名功能,可以实现用正则匹配文件名,替换的时候插入计数器,但是文本文件没见过有支持的编辑器

6. 4需要跨行的,而且为了避免匹配出错需要用非贪婪模式,你这第XX章不用这么麻烦的,格式固定了不用正则都能匹配到,从效率上来说不划算
回复时引用此帖
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,400 声望值: 7
精华: 0,解答: 7
#23 旧 2013-10-02, 00:18:22 默认
venchia 当前离线  

第六个问题我之前也遇到过,后来是用下面的方法解决的
https://bbs.et8.net/bbs/showthread.php?t=864152

em的话最好用的方法还是用宏,不过如果要方便快捷的话,还需要借助其他工具,比如findstr
回复时引用此帖
river01
 
river01 的头像
核心会员
 
资 料:
注册日期: Dec 2002
帖子: 2,652 声望值: 3
精华: 0,解答: 6
#24 旧 2013-10-02, 10:24:27 默认
river01 当前离线  

引用:
作者: venchia 查看帖子
第六个问题我之前也遇到过,后来是用下面的方法解决的
https://bbs.et8.net/bbs/showthread.php?t=864152

em的话最好用的方法还是用宏,不过如果要方便快捷的话,还需要借助其他工具,比如findstr
对呢findstr正合适,但是findstr不支持正则查找,否则就完美了。

此帖于 2013-10-02 12:36:27 被 river01 编辑. .
回复时引用此帖
river01
 
river01 的头像
核心会员
 
资 料:
注册日期: Dec 2002
帖子: 2,652 声望值: 3
精华: 0,解答: 6
#25 旧 2013-10-02, 10:28:43 默认
river01 当前离线  

引用:
作者: MacOS 查看帖子
都不能,有步骤操作都不是正则能做的,先看看WIKI的语法描述吧,大概来说,这是一种只限本次有效的正顺序匹配方式,5必须用其他算法轮询编号,6可以用AWK之类的输出程序将获取结果输出到文件或回显
嗯,如果那么,不支持那么多步,这个理解了了
回复时引用此帖
river01
 
river01 的头像
核心会员
 
资 料:
注册日期: Dec 2002
帖子: 2,652 声望值: 3
精华: 0,解答: 6
#26 旧 2013-10-02, 10:38:01 默认
river01 当前离线  

引用:
作者: nicol 查看帖子
(首)[\s\S]+?(尾)然后替换成\1\2,..
4•与12楼的.*除了保留首尾还有什么语法上的不同?
回复时引用此帖
MacOS
 
MacOS 的头像
热心会员
 
资 料:
注册日期: Aug 2002
帖子: 13,448 声望值: 5
精华: 0,解答: 129
#27 旧 2013-10-02, 12:11:04 默认
MacOS 当前离线  

没有,同样是匹配所有字符,只是解释器的差异
6像16楼或19楼那样用输出是最常见做法,也不容易犯逻辑错误,如果转正则,需要把非匹配条件全逆反,将匹配区间趋向远离原规则,改写为正序逻辑,很容易漏掉一些区间,这条推理了一个基本没错误的写法
^[^第]*$|^.*第[^\d].*$|^.*第\d+[^章\d].*$
从第字的存在与否开始,逐渐逼近后面数字、数字后章字存在与否
回复时引用此帖
nicol
 
nicol 的头像
热心会员
 
资 料:
注册日期: Jun 2001
帖子: 11,683 声望值: 6
精华: 0,解答: 11
#28 旧 2013-10-02, 12:43:43 默认
nicol 当前离线  

引用:
作者: river01 查看帖子
4•与12楼的.*除了保留首尾还有什么语法上的不同?
[\s\S]+?是匹配任意字符的非贪婪模式,理论上最安全,实际上要看各个编辑器的具体情况

.* 是贪婪模式,也就是有可能会尽量多的匹配,基本上这种用法肯定会有错误匹配,这个如果写成.*?也是非贪婪模式,但是.这个用法不如[\s\S]适用性广

另外,不同编辑器对正则的解释都不同,所以,会出现在某个编辑器能用另一个就不行。如果要编辑的文本不是很大就用rexgexbuddy吧,这个可视化效果很不错。
回复时引用此帖
foxme
 
foxme 的头像
核心会员
 
资 料:
注册日期: Mar 2001
帖子: 4,058 声望值: 3
精华: 0,解答: 30
#29 旧 2013-10-06, 00:47:00 默认
foxme 当前离线  

引用:
第\d+章[^\n]+
这样就行了吧
如果是汉字数字的话就这样:
第[一二三四五六七八九十]+章[^\n]+
@nicol 这个似乎只能匹配 第xx章 开头的行. 如果他前面有个空格或者字符什么的, 就不能匹配整行. 应该改为:

^.*第[^章]*?章.*$ //确定第和章之间是非"章"字的实例.

@river01 我对正则也很有兴趣, 我借你的帖子一起学习. 谢谢.

此帖于 2013-10-06 14:21:05 被 foxme 编辑. .
回复时引用此帖
river01
 
river01 的头像
核心会员
 
资 料:
注册日期: Dec 2002
帖子: 2,652 声望值: 3
精华: 0,解答: 6
#30 旧 2013-10-06, 11:25:48 默认
river01 当前离线  

引用:
作者: foxme 查看帖子
nicol 这个似乎只能匹配 第xx章 开头的行. 如果他前面有个空格或者字符什么的, 就不能匹配整行. 应该改为:

^.*第.{1,n}章.*$ //其中n可以根据实际调整. 这样数字和中文数字就全匹配了(根据实际情况而定).

river01 我对正则也很有兴趣, 我借你的帖子一起学习. 谢谢.
我原意想提取有用的章节名所以前面的不用考虑,具体应用要根据实际情况。

8、对于.*我还是有疑问,它会不会把后面的第字也匹配了?规则是什么,匹配到第字就终止.的匹配吗?

此帖于 2013-10-06 11:31:17 被 river01 编辑. .
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 07:32:25.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号