【问题标题】:How to get the first sentence from the first paragraph?如何从第一段中获取第一句话?
【发布时间】:2014-11-06 12:10:39
【问题描述】:

如何从第一段中得到第一句话?

 <h2>Test</h2>
 <p class="preserve">
      Morbi in sem quis dui placerat ornare. Pellentesque odio nisi. Euismod in pharetra a, diam.
 </p>
 <p class="preserve">
      Morbi in sem quis dui placerat ornare. Pellentesque odio nisi. Euismod in pharetra a, diam.
 </p>

我的正则表达式从第一段和第二段中提取所有句子。

<p.*>.*\.\s[A-Z]

【问题讨论】:

  • 使用 HTML 敏捷包。
  • 您能更好地解释一下您的意图吗?您想从 C# 代码中获取第一段...还是可以通过 JS 制作?谢谢。
  • 您能否阐明句子的含义或您期望提取的文本看起来像什么?句子的正常英语用法意味着一组以句号结尾的单词。从答案中的 cmets 来看,您似乎在寻找其他东西。

标签: c# regex string match


【解决方案1】:

步骤:

  • 设置单行模式
  • 首先跳过p标签和空格字符 - &lt;p.*?&gt;\s+
  • 在第一个点.*?\.之前获取所有内容。

regex demo

<p.*?>\s+(.*?)\.

【讨论】:

  • 但是句子不只是一个点,而是空格后面的一个大写字母。在第一句话内加一个点,这样它就停止工作了。
  • @podeig 你看过正则表达式演示吗?我想你错过了一些细节。
  • @podeig 点是句尾。你不能把它放在句子里。
  • 我想我是对的。尝试使用“Morbi in sem quis dui . placerat ornare. Pellentesque odio nisi. Euismod in pharetra a, diam”。作为第一句话。它需要“Morbi in sem quis dui .”,但我需要这句话。点可以是句子的一部分。
  • 是的,我可以。 :) 我使用拥有它的数据。抱歉,我没有在任务描述中提到这一点。
【解决方案2】:
/<p[^>]*>(.|\s)*([A-Z][^<.]*)\./gU

demo

【讨论】:

  • 但是句子不只是一个点,而是空格后面的一个大写字母。在第一句话内加一个点,这样它就停止工作了。
【解决方案3】:

这会将每个段落的第一句放在第 1 组中

<p.*>\s*([A-Z].+?)(?=\.\s[A-Z])

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2012-11-04
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多