【发布时间】:2014-12-23 17:21:14
【问题描述】:
我有一个正在使用C# 程序阅读的文本文件,我需要拆分它的内容。我决定使用Regex.Split()。
我正在寻找的模式是\n( )+Copyright
下面是文本示例:
\r\n\r\n语言:英语\r\n\r\n发行:每个区域\r\n\r\n出版物类型:报纸\r\n\r\n\r\n 版权所有 2014 Washingtonpost.Newsweek Interactive Company, LLC d/b/a\r\n Washington Post Digital\r\n 版权所有\r\n"
包含换行符的原因是因为我也有在段落中出现版权一词的情况:
\r\n\r\n来自 Doug Swanson 的 Blood Aces,将于 2014 年 8 月 14 日由 Penguin Group (USA) LLC 成员 Viking 出版。版权所有 © 2014 Doug J. Swanson .\r\n
但是我遇到的问题是当我执行这个调用时:
var splitContent= Regex.Split(filecontent, @"\n( )+Copyright");
我在splitContent 中获得的项目数量是应有数量的两倍多。我尝试将正则表达式模式修改为 @"(\n){1}?( )+Copyright" 和其他一些类似类型的模式,我得到的项目数量是 splitContent 中我应该得到的项目数量的 4-5 倍。
这是执行这种正则表达式的正确方法吗?
任何帮助将不胜感激。
【问题讨论】:
-
为什么要在括号中加上空格?任何捕获的组也放入结果数组中。
-
我把它放在括号里是为了更好地在视觉上识别空间......我不知道它也会把它放在数组中
-
@PetSerAl 谢谢!我刚刚删除了括号,它完全按照我需要的方式工作。感谢您让我知道捕获的组也被添加到结果数组中!
-
有什么理由不使用String.Split()?
-
你期望结果是什么?向我们展示一些示例文本、预期结果以及您实际得到的结果。