正则表达式拆分字符串但保留分隔符,但不作为单独的元素

时间:2013-03-17 20:08:10

标签: c# regex

我需要拆分以下字符串

the quick brown fox jumps over the lazy dog

进入以下令牌:

  1. 快速的棕色狐狸跳过
  2. 懒狗
  3. 因此,为了解释,我想拆分the,但在前面的数组元素中包含the分隔符(不是它自己的单独元素)。

    任何人都可以对此有所了解或者给我正确的正则表达式吗?

    我正在使用C#。

1 个答案:

答案 0 :(得分:4)

您需要使用look-behind(?<=)。这个名字说明了一切,看看以前的字符,看看它们是否符合某种给定的模式。

这应该有效:

"(?<=\\bthe) "

因此,在任何空格处,检查以前的字符是否为"the",如果是,则匹配。

注意 - 我们还需要包含单词边界\\b(转义\b),其他类似"bathe"的内容也会匹配。

如果没有后视,我们将检查所有空格:

   v     v     v   v     v    v   v    v
the quick brown fox jumps over the lazy dog

使用后视广告,我们只会匹配前面有"the"的广告:(暂时忽略\\b

"the " - 刚找到一个空格,最后一个字符为"the",所以匹配 "quick " - 刚刚找到另一个空格,但最后一个字符是"...k",所以没有匹配 等

Test