【问题标题】:.NET Regex for full stop at the end of a sentence.NET Regex 用于句尾的句号
【发布时间】:2023-04-02 21:49:01
【问题描述】:

我想在一段文本中的每个句子的末尾匹配一个句号。

句号前必须至少有 3 个单词

这是为了确保只计算句末的句号。跳过Microsoft v 3.2.1 中的句点!请注意,这些词不一定包含拉丁字符。我打算在其他语言中使用,所以我们不能在这里使用 [a-Z]!

我尝试了什么\b.+\b\s+\b.+\b\s+\b.+\b[.] 但这会选择整个句子!

也许可以使用 if else 构造?如果找到\b.+\b\s+\b.+\b\s+\b.+\b[.],请选择点,否则不要。有可能吗?

【问题讨论】:

  • 你已经尝试了什么?
  • 有同班同学有同样的想法吗? (让 SO 的人来做繁重的工作......;))这是半小时前问的......How to...

标签: .net regex


【解决方案1】:

好的。试一试:

(?:(?:\s|^|\.)[^\s\d.]+){3}(\.)

Expl.:(非捕获)查找空格、句号或行首,后跟任意数量(至少一个)不是空格、数字或句号的字符。重复此操作 3 次。然后捕获一个句号:D 完成!

查看here

问候

【讨论】:

  • 太棒了!你几乎明白了。一个小问题。现在,这会选择三个单词和点。我正在使用搜索和替换算法,因此点之前的三个单词也被替换了。有没有办法只替换“点”?
  • 知道了!在查找框中使用(?<name>(?:(?:\s|^|\.)[^\s\d.]+){3})(\.),在替换中使用${name} ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 2012-12-16
  • 2019-04-18
  • 1970-01-01
  • 2018-12-14
相关资源
最近更新 更多