. : : ClassiClub ForuM : : .

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

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



发表新主题 关闭主题
 
主题工具
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,399 声望值: 7
精华: 0,解答: 7
#1 旧 2007-07-05, 12:28:55 默认 已解答: 【求助】正则提取文字的问题
venchia 当前离线  

不知道这个正则要怎么写,才能把下面的卷集,章节提取出来呢

我用emeditor的,写出来的都是缺斤少两的,都不对,找能人帮忙一下,谢谢

引用:
  第一集
  第一章 始动
  “小卫啊,上工了。”工头老李看着一个正在埋头苦读的小伙子喊道。看到他那略显消瘦的身影,心中不由得叹息一声想到:“农家的孩子就是受苦啊,多好的孩子啊,前程就这么断送了。”再联想到自己的娃,也差不多到了该用钱的时候了,也不知道自己这点工钱够不够他上学用的?摇摇头不再乱想,转过身去上工了。
  第二章 突破
  连续一个星期了,陈卫还是每天都在修路,那个山头也被炸的差不多了,看样子再有几天就可以开始铺路了。
  但让陈卫纳闷不已的是,他现在每天晚上都会做同一个梦。就是那个关于“影子”陈卫的梦。更离谱的是梦的内容居然也都是一摸一样的。
  第三章 融合
  午夜时分,天上挂着一轮明月,白白的月光把大地照得也白茫茫的一片。陈卫盘膝坐在一个白天刚炸出来的一个大坑里,全身环绕着一层紫色的光雾----没错,他正在修炼。
提取成
引用:
第一集
第一章 始动
第二章 突破
第三章 融合
最佳解答为:社会青年
引用:
作者: venchia
运行了那js之后,输入^\s*第.+[章集].*$,生成了空内容文件
用下面的脚本

代码:
//extracting strings matching user's Regex from a txt file 

document.selection.selectall();
str=document.selection.text;
document.selection.collapse();;
pattern=prompt("Regular expression?","");
re = new RegExp( pattern, "igm" );
editor.newfile();
while((result = re.exec(str)) != null) {

    document.write(result[0]);

}
然后用 ^.*第.+[章集].*$ 匹配试试,看看是不是你要的结果
lifesinger
 
lifesinger 的头像
待认证激活
 
资 料:
注册日期: Nov 2005
帖子: 2,053 声望值: 2
精华: 34
#2 旧 2007-07-05, 12:41:33 默认
lifesinger 当前离线  

try this:
代码:
^\s*第.+[章集].*$


谦卑 宁静 关爱
mydvdrip
 
mydvdrip 的头像
核心会员
 
资 料:
注册日期: Jul 2002
帖子: 2,669 声望值: 4
精华: 0,解答: 12
#3 旧 2007-07-05, 12:46:27 默认
mydvdrip 当前离线  

用awk吧
awk '$1 ~ /^第.+集$/ { print }; $1 ~ /^第.+章$/ { print }' your_text_file.txt
Fox_Mu
 
Fox_Mu 的头像
热心会员
 
资 料:
注册日期: Jun 2002
帖子: 413 声望值: 4
精华: 0
#4 旧 2007-07-05, 13:13:50 默认
Fox_Mu 当前离线  

UltraEdit Regular Expressions: %?*第?+[章集]?+$
需要选中“List Lines Containing String”选项。


(^J^)
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,399 声望值: 7
精华: 0,解答: 7
#5 旧 2007-07-05, 13:41:34 默认
venchia 当前离线  

这是是找出相关文字,不过要提取出来怎么做啊

比如说把不相干的替换掉
lifesinger
 
lifesinger 的头像
待认证激活
 
资 料:
注册日期: Nov 2005
帖子: 2,053 声望值: 2
精华: 34
#6 旧 2007-07-05, 14:45:40 默认
lifesinger 当前离线  

引用:
作者: venchia
这是是找出相关文字,不过要提取出来怎么做啊

比如说把不相干的替换掉
在emeditor中,

代码:
(?<=^|(第.+[章集])).*?(?=$|(第.+[章集]))
替换为空
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,399 声望值: 7
精华: 0,解答: 7
#7 旧 2007-07-05, 21:59:38 默认
venchia 当前离线  

谢谢金雕,问题解决了
lifesinger
 
lifesinger 的头像
待认证激活
 
资 料:
注册日期: Nov 2005
帖子: 2,053 声望值: 2
精华: 34
#8 旧 2007-07-22, 22:51:18 默认
lifesinger 当前离线  

总结了下:

正则表达式中的反向匹配: http://lifesinger.org/blog/?p=58
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,399 声望值: 7
精华: 0,解答: 7
#9 旧 2007-07-23, 00:44:45 默认
venchia 当前离线  

这样就更清楚了啊,thx
uuu123
 
uuu123 的头像
待认证激活
 
资 料:
注册日期: Mar 2002
帖子: 138 声望值: 2
精华: 0
#10 旧 2007-07-23, 04:39:40 默认
uuu123 当前离线  

如果是linux命令行,还有另一种思路更简便快捷,不知道win中有没有类似的命令,也属于正则,但是用一条命令行搞掂(假设原始文本是1.txt):

代码:
cat 1.txt |grep "^\s*第" > 2.txt
即:输出含有以空格开头接“第”字的行,我试验了一下是没问题。
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,399 声望值: 7
精华: 0,解答: 7
#11 旧 2007-07-23, 08:23:53 默认
venchia 当前离线  

当时lefuzzbox说这样也行

findstr /R "\s*第.*[章集].*$" *.txt > output.txt

不过我测试之后好像不成功
社会青年
 
社会青年 的头像
超级会员
 
资 料:
注册日期: Apr 2000
帖子: 1,441 声望值: 2
精华: 1,解答: 1
#12 旧 2007-07-23, 08:34:33 默认
社会青年 当前离线  

其实emeditor是支持javascript的,并且提供了好多对象,用着挺方便的。

下面这段代码可以把提取的内容放在一个新的文件内

代码:
//extracting strings matching user's Regex from a txt file 

document.selection.selectall();
str=document.selection.text;
document.selection.collapse();;
pattern=prompt("Regular expression?","");
re = new RegExp( pattern, "ig" );
editor.newfile();
while((result = re.exec(str)) != null) {

    document.writeln(result[0]);

}


Do what you should do...
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,399 声望值: 7
精华: 0,解答: 7
#13 旧 2007-07-23, 08:50:55 默认
venchia 当前离线  

提取的内容是什么意思
lifesinger
 
lifesinger 的头像
待认证激活
 
资 料:
注册日期: Nov 2005
帖子: 2,053 声望值: 2
精华: 34
#14 旧 2007-07-23, 09:07:40 默认
lifesinger 当前离线  

引用:
作者: 社会青年
其实emeditor是支持javascript的,并且提供了好多对象,用着挺方便的。

下面这段代码可以把提取的内容放在一个新的文件内

代码:
//extracting strings matching user's Regex from a txt file 

document.selection.selectall();
str=document.selection.text;
document.selection.collapse();;
pattern=prompt("Regular expression?","");
re = new RegExp( pattern, "ig" );
editor.newfile();
while((result = re.exec(str)) != null) {

    document.writeln(result[0]);

}
这样的确可以,可以做个反选宏,以后反选问题就解决了,呵呵

我blog中那帖主要是想用纯正则来完成反选操作,如果不用纯正则,就条条大路通罗马了
社会青年
 
社会青年 的头像
超级会员
 
资 料:
注册日期: Apr 2000
帖子: 1,441 声望值: 2
精华: 1,解答: 1
#15 旧 2007-07-23, 09:54:44 默认
社会青年 当前离线  

引用:
作者: venchia
提取的内容是什么意思
就是给出正则表达式所匹配的内容啊
发表新主题 关闭主题

主题工具

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


所有时间均为北京时间, 现在的时间是 09:05:00.

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

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