一个正则切割问题

原创 2007年09月12日 22:07:00
今天看到csdn一个哥们说怎么把汉字两个两个的给以空格分开。
就是比如 ”我们的祖国是花园啊“  分成 ” 我们  的祖  国是  花园  啊“ 这样的形式。当时没有怎么想。回家来没事,索性研究了一下。

前提:
这个是在cu上抄的匹配中文字符的代码:
$d = "我的太阳";
@pattern = ('[/u4e00-/u9fff]','[^/u4e00-/u9fff]','[chr(0xa1)-chr(0xff)]','[^chr(0xa1)-chr(0xff)]','[/x80-/xff][/x80-/xff]','[^/x80-/xff][^/x80-/xff]','[/x80-/xff]','[^/x80-/xff]','[/u4e00-/u9fa5/uf900-/ufa2d]','[^/u4e00-/u9fa5/uf900-/ufa2d]','[/u4e00-/u9fa5]','[^/u4e00-/u9fa5]','[/x00-/xff]','[^/x00-/xff]');
foreach $p (@pattern)
{
    @result = ($d =~ /($p)/is);
    print "模式$p匹配结果为:@result/n";
}


故而 perl的解决如下:
$d = "我的太阳我的太阳你";
$d = reverse $d;
$d =~ s/(?<=([/x80-/xff][/x80-/xff]))(?=(([/x80-/xff][/x80-/xff]){2})+$)/-/g;
$d = reverse $d;
print  "$d";

这个办法有些笨,但是基本完成了任务。另外上perlmonk上请教了高人,记录了一下其他的解决方案:

说到上面 1 while $d =~ s/(?<=/d/d)(?=/d)/-/; 这个,我就又想到了 $d =~ s/(?<=/d/d)(?=/d)/-/g; 同时比较了他们的区别:
1:
$d = "123456789";
while ($d =~ s/(?<=/d/d)(?=/d)/-/){
     print $d,$/;
}

2:
$d = "123456789";
$d =~ s/(?<=/d/d)(?=/d)(?{print $`,"/n"})/-/g;
print $d;

还不是很清楚,留在以后研究。另外,php的解决相应的也比较简单:

$string = "我的太阳我的太阳你";
echo  preg_replace("/([/x80-/xff][/x80-/xff][/x80-/xff][/x80-/xff])(?=[/x80-/xff][/x80-/xff])/is", "//1 ", $string);










正则表达式-2(字符串切割)+(字符串按正则表达式替换)

超循环输出 for(String s : arr) { System.out.println(s); } } str:进行切割的字符串  reg:切割的标志 class Stri...
  • dingjingchao
  • dingjingchao
  • 2016年11月08日 11:25
  • 1296

js中字符串处理 split的使用

js split的定义和用法,官方参考。 定义和用法 split() 方法用于把一个字符串分割成字符串数组。 语法 stringObject.split(separator,howmany...
  • qianzhihe1992110
  • qianzhihe1992110
  • 2016年09月02日 15:00
  • 1823

正则表达式的四大操作(匹配,切割,替换,获取)

正则表达式:用来操作字符串的一些规则。 好处:对字符串的复杂操作变简单。 坏处:阅读性差 特点:将字符串操作的代码用一些符号来表示   组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,...
  • liuchuangjin
  • liuchuangjin
  • 2015年06月15日 09:35
  • 3243

实现一个支持正则匹配的Filter以及Spring管理Filter遇到的问题

实现一个可支持白名单和黑名单url正则匹配的Filter,同时解决Spring管理Filter遇到的生命周期的问题。...
  • hqshaozhu
  • hqshaozhu
  • 2015年05月14日 00:02
  • 2502

请教一个问题,以下的这段,应该怎么写正则表达

XML/HTML code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
  • wiichengmc020
  • wiichengmc020
  • 2014年11月05日 10:44
  • 305

IE和火狐关于正则验证的一个问题/g/m

文章分类:Web前端 最近一个项目中做的一个前台的手机验证(/^13/d{9}$/g.test(str2))||(/^15/d{9}$/g.test(str2))||(/^18/d{9}$/g.tes...
  • huangrong520raoting
  • huangrong520raoting
  • 2011年06月25日 19:32
  • 225

Linux shell中的一个问题 ${}带正则匹配的表达式

目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解。后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式。故记录下来,以备后来查阅。...
  • pankul
  • pankul
  • 2013年07月26日 13:49
  • 2155

假如正则从来没来过,我们该如何去匹配一个字符串

  • 2014年05月27日 14:50
  • 138KB
  • 下载

利用正则提取网页中的一个表格

  • 2008年12月26日 22:28
  • 43KB
  • 下载

求解L1_正则项优化问题的两种算法_朱红

  • 2017年12月28日 22:02
  • 1.8MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个正则切割问题
举报原因:
原因补充:

(最多只允许输入30个字)