如何拆分字符串保留空格和任意数量的\ n字符

时间:2012-06-04 15:09:38

标签: c# regex

我想拆分字符串并使用以下规则创建集合: 字符串应该分成单词。

1)如果字符串包含'\ n',则应将其视为单独的'\ n'字样 2)如果字符串包含多个'\ n',则应将其视为多于'\ n'字样 3)不应从弦上移除任何空间。唯一的例外是,如果空间介于两个\ n之间,则可以忽略它。

PS:我尝试了很多字符串拆分,第一次拆分\ n \ n字符并创建了一个集合,缺点是,如果我有两个\ n连续,我无法在集合中创建两个虚拟字。任何帮助将不胜感激。

enter image description here

无论如何使用正则表达式执行此操作?

3 个答案:

答案 0 :(得分:1)

看起来像家庭作业。因此,read up on \b

应该让你朝着正确的方向前进。

答案 1 :(得分:1)

阅读zero-width assertions。使用它们,您可以定义例如\s\S没有实际匹配任何相邻字符。

编辑: 这是another question,其中OP询问了这些结构。

答案 2 :(得分:1)

使用这样的正则表达式进行拆分:

(?<=[\S\n])(?=\s)

类似的东西:

var substrings = Regex.Split(input, @"(?<=[\S\n])(?=\s)");

这根本不会删除任何空格,但这不是必需的,所以应该没问题。

如果你真的希望删除\n之间的空格,你可以分开:

(?<=[\S\n])(?=\s)(?:[ \t]+(?=\n))?