淘客熙熙

主题:文问题,关于正则表达式 -- pastebt

共:💬26 🌺8 新:
分页树展主题 · 全看首页 上页
/ 2
下页 末页
    • 家园 用perl搞这种事超简单

      $input=<STDIN>;

      chomp($input);

      if ($input =~ /^(\d*)(a\d*b)(\d*)$/)

      {

      $a = $1;

      $b = $2;

      $c = $3;

      $b =~ s/3//g;

      $output = $a.$b.$c;

      print "$output\n";

      }

      实际就两个正则表达式

      第一个/^(\d*)a(\d*)b(\d*)$/运行完了,对你这个输入$1是1234,$2是a5635367312b,$3是563789

      然后把$2赋值给$b,用s/3//g把里面的3都替换掉,一定要加g标示符,代表全局替换,否则只替换第一个3。

      最后$output就是1234a5656712b563789

      • 家园 按这个思路

        没哪种语言是复杂的,呵呵

        • 家园 单用正则好像是搞不定这件事

          正则语言比普通语言好像是差了什么功能,记得有1个分类,不过我很久不搞这些都忘了,编译原理学的比较好的应该清楚。

    • 家园 先找3,再确定3是不是在ab之间,不知道这样行不?
    • 家园 加标志位

      {string1} a {string2} 3 {string3} b {string4}

      然后你再把

      {string1} a {string2} {string3} b {string4}

      合起来就好了.

      各种语言的规矩不一样。

    • 家园 可能要分两步走吧,先搜再替换?

      不是特别熟悉,感觉上没有直接的方法。

      大概可以

      1、用正则表达 先找出 a 开头,b 结束这段字符串。

      2、对这段字符串替换。

      3、替换后的字符串,用1中的正则表达,替换回去。

      用你给出的字符串“1234a5635367312b563789”,替换 a 和 b 之间的"3"为"Z",用 javascript 实现的话,就是

      1、 "1234a5635367312b563789".match(/a[^b]+b/i),得到 "a5635367312b"

      2、temp="a5635367312b".replace(/3/gi,"Z")

      3、"1234a5635367312b563789".replace(/a[^b]+b/i,temp)

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河