【问题标题】:Enhance my RegEx for proofreading增强我的 RegEx 以进行校对
【发布时间】:2014-11-24 01:37:11
【问题描述】:

我的正则表达式用于 C#

(".*?"|“.*?”|“.*'|'*.")

我也在尝试这种模式

("|'|“).*?("|'|”)

但它没有给出我想要的结果

这是示例段落
“Lorem” Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,“Lorem Ipsum”一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。它不仅经历了“五个世纪”,而且经历了电子排版的飞跃,基本保持不变。它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 表的发布而流行起来,最近还随着“Aldus”“PageMaker”等“桌面出版”软件(包括 Lorem Ipsum 的版本)而流行。

我的目标是获取这些字符中的所有单词

"", “”, “', '", ''

之所以会这样,是因为,假设一个写文章的人打错了字,文章作者没有用--双引号关闭双引号,而是用单引号关闭它。

现在,我得到的是这个

我的预期输出是

Lorem, Lorem Ipsum, five centuries, desktop publishing, Aldus, PageMaker

但不限于这些,因为此 RegEx 将在整篇文章和数百篇文章中运行。

上面示例段落中的这一行可能是自 1500 年代以来最棘手的部分
行业 的标准虚拟文本,当时一位不知名的打印机采用了一种类型的厨房并将其加扰以制作一个型样书。它不仅存在“五个世纪”,而且

【问题讨论】:

  • 你的帖子没有明确排除嵌套引号 - 考虑编辑......或者实际上也考虑嵌套引号“就像有人说'当你使用正则表达式时你现在必须遇到问题',这是通常提到的“询问正则表达式”“...还可以查看图表顶部有关与正则表达式匹配的嵌套结构的问题:stackoverflow.com/questions/1732348/…

标签: c# regex


【解决方案1】:
(?:"|'(?!s\b|\s)|“)[^"'“”]+(?:"|'(?!s\b)|”)

试试这个。查看演示。

http://regex101.com/r/yP3iB0/13

【讨论】:

  • 它正在工作,但我遇到了一些错误。将此添加为新段落(自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了“打字机”并将其打乱以制作打字机“样本书”)
  • 快到了。将此添加为另一个段落(它不仅幸存了“五个世纪”,而且还跨越了电子排版,基本保持不变。)
  • 小修正 - (?:"|'|“)(?!s\b|\s)[^"'“”]+(?:"|'|”)(?! s\b)
  • 我希望我能用积分奖励你,但你应该得到“答案”
猜你喜欢
  • 1970-01-01
  • 2021-11-09
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多