使用正则表达式从序列中分割字符串

时间:2013-05-07 19:47:13

标签: regex bash

我需要一个匹配字母和数字的正则表达式,但与序列“00”不匹配。

e.g。 “hello00world00number001”应匹配:“hello”,“world”,“number”和“1”。

我测试没有成功:

(?:[\w](?<!00))+

编辑:“hello000world0000number000001”必须分为:“hello0”“world”“number0”和“1”

3 个答案:

答案 0 :(得分:5)

输入字符串:hello000world0000number00000100test00test20

分割

  1. 如果遇到类似00的系列,仅按0000拆分将生成空匹配:
    输出:hello/0world//number//01/test/test20

  2. 要解决此问题,请在组中包含2个零:
    RegEx:(00)+ - 系列中的最后一个不均匀0转到下一场比赛 - live demo
    输出:hello/0world/number/01/test/test20

  3. 使用否定前瞻:
    RegEx:(00)+(?!0) - 将第一个0保留在第一场比赛的不均匀系列中 - live demo
    输出:hello0/world/number0/1/test/test20

  4. 匹配

    1. 00
    2. 的结果不正确
    3. /([a-z0-9]+?)(?:(?:00)+|$)/gi - live demo
    4. /([a-z0-9]+?)(?:(?:00)+(?!0)|$)/gi - live demo

答案 1 :(得分:1)

str = "hello00world00number001"
str.split("00")

为什么这不起作用

答案 2 :(得分:1)

您可以使用以下模式拆分“hello000world0000number000001”:

(00)+(?=0?[^0])