Chinaunix

标题: 请教一个正则表达式 [打印本页]

作者: 韧体    时间: 2008-04-01 11:43
标题: 请教一个正则表达式
现在有一批文件,内容格式大概是这样的:
(AAA)dewfewferfe
fergrefger
rgregergetg(BBB)
(AAA)fgergrtghtrhr(BBB)
(CCC)fdefewrfgergr(DDD)
(AAA)FWSFGF
GDGHDGDGF
..........
GDHFDGH(CCC)
GHHGGHG
(AAA)fregfretgegtertgrg(CCC)
每个文件都是不规则的,但是肯定包含(AAA).....(CCC)字段
我现在想匹配
(AAA)FWSFGF
GDGHDGDGF
.........
GDHFDGH(CCC)
(AAA)fregfretgegtertgrg(CCC)
这个正则要怎么写呢?

[ 本帖最后由 韧体 于 2008-4-1 12:11 编辑 ]
作者: flw    时间: 2008-04-01 11:56
这是 HTML 语法,怎么能说人家不规则呢?
作者: 韧体    时间: 2008-04-01 12:00
修改了下帖子~

[ 本帖最后由 韧体 于 2008-4-1 12:12 编辑 ]
作者: flw    时间: 2008-04-01 12:13
继续,再改改,把问题遮掩得更深一点,不然别人一不小心就帮你解决了。
作者: 韧体    时间: 2008-04-01 12:15
原帖由 flw 于 2008-4-1 12:13 发表
继续,再改改,把问题遮掩得更深一点,不然别人一不小心就帮你解决了。

不是,因为原始的帖子表达不明确所以才修改了下~
作者: 韧体    时间: 2008-04-01 12:17
我是想明白一种方法(如何用正则匹配包含不确定数量换行符的内容)而不是一个针对实例的解决
作者: flw    时间: 2008-04-01 12:22
说实话,真的没搞明白你想要干什么。
不过看起来你对你的思路非常自信,
多行匹配用修饰符 s and m,详细情况你可以看看 perldoc perlre,还有大骆驼有关章节。
我能帮你的只有这些了。
作者: 韧体    时间: 2008-04-01 12:24
谢谢版主~其实我就是想搞明白多行匹配
谢谢您的指点
作者: flw    时间: 2008-04-01 12:25
另外我想说的一点就是,不要滥用正则表达式。
作者: 韧体    时间: 2008-04-01 12:30
好了,问题已经解决了,刚才就是迷不过劲了~谢谢flw版的指点
作者: flw    时间: 2008-04-01 12:48
原帖由 韧体 于 2008-4-1 12:30 发表
好了,问题已经解决了,刚才就是迷不过劲了~谢谢flw版的指点

索取已成习惯,意识不到奉献?
作者: 韧体    时间: 2008-04-01 13:10
哎,刚刚证明还是不行,看来没办法靠正则来解决
因为有些文档还包含了
(AAA)dfwef
(AAA)dfewffwfrfrwrfwf
fwsfwrfrwfr(CCC)
fwfwfwsfws(CCC)
这样的套嵌,还是没办法只取
(AAA)dfewffwfrfrwrfwf
fwsfwrfrwfr(CCC)
看来只能另想他法了
作者: ly5066113    时间: 2008-04-01 13:57
原帖由 韧体 于 2008-4-1 13:10 发表
哎,刚刚证明还是不行,看来没办法靠正则来解决
因为有些文档还包含了
(AAA)dfwef
(AAA)dfewffwfrfrwrfwf
fwsfwrfrwfr(CCC)
fwfwfwsfws(CCC)
这样的套嵌,还是没办法只取
(AAA)dfewffwfrfrwrfwf
fwsfwr ...


据说正则里有最小匹配,好象可以试试。
作者: 韧体    时间: 2008-04-01 14:18
原帖由 ly5066113 于 2008-4-1 13:57 发表


据说正则里有最小匹配,好象可以试试。

试了不行,因为文件内有很多不规则套嵌
作者: __lxmxn__    时间: 2008-04-02 03:49
这样的效果吗?

  1. #! perl -w
  2. use strict;

  3. open my $fh,"<errs.txt";
  4. undef $/;

  5. my $context=<$fh>;
  6. while( $context =~ m/\(AAA\)(?>[^()]+)\(CCC\)/gs ) {
  7.         print '-->',$&,"\n";
  8. }

  9. close $fh;
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2