免费注册 查看新帖 |

Chinaunix

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

大家好,这段文本怎么用正则表达式处理啊,没整过去 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-09-08 13:55 |只看该作者

回复 #10 zhouhaiming 的帖子

对呀,你自己不都说了嘛,?代表前面符号出现0或1次,而你第三行中没有#,你开始的代码却要匹配一次#,那必然没有第三行了,加?后有没有#都会去匹配

论坛徽章:
0
12 [报告]
发表于 2007-09-08 18:43 |只看该作者
原帖由 zhouhaiming 于 2007-9-8 13:32 发表
朋友?不是表示它前面的字符重复0次或1次吗?不理解,哪位热心的朋友能解释一下吗?天天盼着呢,急等求解!这几种解决方案都解释解释!先谢谢了

?表示尽可能少的匹配
你最好多看看正则匹配哪一章
你认真看了,绝对不会有上面的问题

论坛徽章:
0
13 [报告]
发表于 2007-09-08 20:20 |只看该作者
这样也可以


  1. #!/usr/bin/perl -w
  2. use strict;

  3. while(<>){
  4.         s/#.*//;
  5. if ($_ ne "\n"){
  6.    print $_;
  7. }
  8. }
复制代码

论坛徽章:
0
14 [报告]
发表于 2007-09-08 23:17 |只看该作者

这样可以吧

open (FH,"01.txt");
while(<FH>){
s/\#.*//g;
s/^\s+//;
print $_;
}
close FH;
不错,借用正则,这样就好了.

论坛徽章:
0
15 [报告]
发表于 2007-09-08 23:55 |只看该作者
sed 's/#.*//'

论坛徽章:
0
16 [报告]
发表于 2007-09-09 16:38 |只看该作者
原帖由 zhouhaiming 于 2007-9-7 18:33 发表
我试了
$_=~s/#.*//g;
也好用
不加g也好用啊
$_=~s/#.*//;也好用,迷糊了。我学的太浅了

$_=~s/\#.*//g;
不理解,$_=~s/(.+)#(.*)/$1/;也没理解,哪位热心的网友帮忙解释一下吧!!真不好理解




解释:
1 - 在默认的贪婪匹配模式下, .*会一直匹配到行尾, 所以此时无g也无妨.

2 - $_ =~ s/(.+)#(.*)/$1/;  
匹配包含注释的"整行", 然后把该行替换为匹配到的注释以前的部分.
也是一种思路:>


不知道这样清楚了没????

论坛徽章:
0
17 [报告]
发表于 2007-09-09 18:05 |只看该作者
个人认为

# 并不属于模式匹配下可以解析的特殊元字符,所以加不加\没有关系

? 表示匹配0或一个

* 表示匹配0,1 或多个


.*  关于 .*?   我想区别是在匹配的多少吧,?限制了*进行匹配的范围(这个不是很确定)

论坛徽章:
0
18 [报告]
发表于 2007-09-10 11:20 |只看该作者
原帖由 Lonki 于 2007-9-9 16:38 发表




解释:
1 - 在默认的贪婪匹配模式下, .*会一直匹配到行尾, 所以此时无g也无妨.

2 - $_ =~ s/(.+)#(.*)/$1/;  
匹配包含注释的"整行", 然后把该行替换为匹配到的注释以前的部分.
也是一种思路:>
...

#(.*)那后面没注释的怎么办啊?有注释的我理解了,一行中后面没注释的呢?

论坛徽章:
0
19 [报告]
发表于 2007-09-10 11:21 |只看该作者
原帖由 hfmouse 于 2007-9-9 18:05 发表
个人认为

# 并不属于模式匹配下可以解析的特殊元字符,所以加不加\没有关系

? 表示匹配0或一个

* 表示匹配0,1 或多个


.*  关于 .*?   我想区别是在匹配的多少吧,?限制了*进行匹配的范围(这个不 ...

我也觉得#前的那个反斜杠是多余的,容易造成误解!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2007-09-10 14:01 |只看该作者
我觉得用模块就行了。
Config::IniFiles 就挺好用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP