免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Perl 求正则
12下一页
最近访问板块 发新帖
查看: 2967 | 回复: 11
打印 上一主题 下一主题

求正则 [复制链接]

论坛徽章:
1
丑牛
日期:2014-02-14 17:07:04
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-28 15:41 |只看该作者 |正序浏览
我想给括号中间的@#前面都加上空格
能用一条正则来替换么?
谢谢

12@3(13@3@4#5#67)12#3

论坛徽章:
1
丑牛
日期:2014-02-14 17:07:04
12 [报告]
发表于 2012-07-04 17:23 |只看该作者
回复 6# yinyuemi
谢谢,你这个很好用。


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
11 [报告]
发表于 2012-06-29 15:29 |只看该作者
方法很好。

论坛徽章:
0
10 [报告]
发表于 2012-06-29 10:01 |只看该作者
my $a='12@3(13@3@4#5#67)12#3';
if($a=~/\(.+\)/)
{
        my $_=$&;
        s/\@/ \@/gx;
        s/\#/ \#/gx;
        $a=~s/\(.+\)/$_/;
        print $a,"\n";
}

论坛徽章:
0
9 [报告]
发表于 2012-06-29 09:43 |只看该作者
#!D:\strawberry\perl\bin\perl5.12.3 -w

use strict;
use warnings;

my $a='12@3(13@3@4#5#67)12#3';
if($a=~/\(.+\)/)
{
        my $_=$&;
        s/\@/ \@/gx;
        s/\#/ \#/gx;
        print $_,"\n";
}

论坛徽章:
0
8 [报告]
发表于 2012-06-29 06:44 |只看该作者
  1. my $str = '12@3(13@3@4#5#67)12#3';
  2. $str =~ s/([\@#])(?=[^\(\)]*?\))/ $1/g;
  3. die $str;
复制代码
写漏了

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
7 [报告]
发表于 2012-06-28 23:43 |只看该作者
本帖最后由 cdtits 于 2012-06-29 09:45 编辑

楼上的很妙:
  1. my $text = '12@3(13@3@4#5#67)12#3';
  2. $text =~ s/(?=[@#])(?!([^()]+\())/ /g;
  3. print $text, "\n";
复制代码
还有一种类似方法:
  1. $text =~ s/(?=[@#])(?=([^()]+\)))/ /g;
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2012-06-28 23:25 |只看该作者
回复 1# ace_fei
  1. perl -le '$str="12\@3(13\@3\@4#5#67)12#3"; $str=~s/(?=((@|#)(?!([^()]+([(]|$)))))/ /g;print $str'
  2. 12@3(13 @3 @4 #5 #67)12#3
复制代码

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
5 [报告]
发表于 2012-06-28 22:35 |只看该作者
本帖最后由 ziyunfei 于 2012-06-28 22:36 编辑

regexbuddy 选.net正则
  1. (?<=\(.*)(@|#)(?=.*\))
复制代码
替换为
  1. 空格$&
复制代码


一般编辑器都不是用.net写的

论坛徽章:
0
4 [报告]
发表于 2012-06-28 17:44 |只看该作者
my $str = '12@3(13@3@4#5#67)12#3';
$str =~ s/([\@#])(?=[^\)]*?\))/ $1/g;
die $str;

取巧的办法
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP