c#正则表达式拆分二进制字符串

Tra*_*olu 2 c# regex split

我正在尝试以特定方式拆分一串二进制数字

假设这是我的字符串 100011001110010101110

我想在1之前每隔0分割字符串

所以分割后上面的字符串变成

1000 1100 11100 10 10 1110

我使用了/(1+0+)/g正确拆分字符串的 Regex 模式,但它错过了一些组。这是c#代码

Regex.Split(stringToSplit, @"(1+0+)");
Run Code Online (Sandbox Code Playgroud)

请问我哪里错了。

编辑:我忘了,我敢肯定一个1总是先0

提前致谢。

Dmi*_*nko 6

你可以尝试寻找未来落后,即洒在零长度的文本与0 落后分裂和1 未来

代码:

  string source = "100011001110010101110";

  var result = Regex.Split(source, "(?<=0)(?=1)");

  // Let's have a look
  Console.Write(string.Join(Environment.NewLine, result));
Run Code Online (Sandbox Code Playgroud)

结果:

1000
1100
11100
10
10
1110
Run Code Online (Sandbox Code Playgroud)

编辑:模式(?<=0)(?=1)解释:

(?<=0) - 0 should be behind the split
       - empty; split on epmty (zero-length) text
(?=1)  - 1 should be ahead of the split
Run Code Online (Sandbox Code Playgroud)

所以我们有

1000 110011
   ^^^
   |||- 1 should be ahead of split
   ||--   split here
   |--- 0 should be behind the split
Run Code Online (Sandbox Code Playgroud)

  • 好的!您能否添加有关该模式的更多解释? (2认同)