我想拆分字符串并使用以下规则创建集合: 字符串应该分成单词。
1)如果字符串包含'\ n',则应将其视为单独的'\ n'字样 2)如果字符串包含多个'\ n',则应将其视为多于'\ n'字样 3)不应从弦上移除任何空间。唯一的例外是,如果空间介于两个\ n之间,则可以忽略它。
PS:我尝试了很多字符串拆分,第一次拆分\ n \ n字符并创建了一个集合,缺点是,如果我有两个\ n连续,我无法在集合中创建两个虚拟字。任何帮助将不胜感激。
无论如何使用正则表达式执行此操作?
答案 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))?