如何通过正则表达式识别文本中的段落?

Posted

技术标签:

【中文标题】如何通过正则表达式识别文本中的段落?【英文标题】:how to recognize paragraph in a text by regular expression? 【发布时间】:2017-08-20 14:35:36 【问题描述】:

我正在编写一个将文本转换为 html 的软件,并且我还使用了正则表达式。我想知道如何识别正文中的段落? 我写了一段识别段落的sn-p代码,例如,在这个文本中,它只是识别“我的”这个词。为了识别一个段落,我寻找它之前和之后有双空格的文本。

你好

我的名字是拉达马尔·谢拉。

   private void btnConvert_Click(object sender, EventArgs e)
    


        string inputText = txtInput.Text;   


       string pattern = @"(\r\n)([a-zA-Z]+)";

        Match result = Regex.Match(txtInput.Text, pattern);
        if (result.Success)
        
            Debug.WriteLine("match : 0", result.Value);
        


    

【问题讨论】:

您可以使用Regex.Split(?:\r\n?|\n)2, 正则表达式来获取所有“段落”.. @WiktorStribiżew,你摇滚!,它工作正常。非常感谢 @WiktorStribiżew 但是,目前有一个问题,“嗨”是一个标题,它不是一个段落。我无法用拆分方法识别段落。我只想“我的名字是 radamal shera 。” 在应用Regex.Split 之前删除该行。第一行总是标题吗? @WiktorStribiżew 我的文字是随机的,它取决于我程序中的用户输入。因为也许我们在文字中没有标题。 【参考方案1】:

由于您计划在 2 个或更多换行符之间获取子字符串,您可以使用 Regex.Split 和以下正则表达式:

(?:\r\n?|\n)2,

见th regex demo

详情

(?:\r\n?|\n)2, - 2 次或更多 (2,) 出现: \r\n? - CR 和可选的 LF | - 或 \n - 换行符 (LF)

要删除第一行,您可以使用它并拆分其余部分:

var pars = Regex.Split(s, @"^.*[\r\n]*|(?:\r\n?|\n)2,")
  .Where(m => !string.IsNullOrEmpty(m))
  .ToList();

【讨论】:

以上是关于如何通过正则表达式识别文本中的段落?的主要内容,如果未能解决你的问题,请参考以下文章

iOS之正则表达式

Python正则表达式仅根据正则表达式替换段落中的特定行而不是整个文件

如何通过正则表达式收集 HTML-div 中的 url 文本?

如何通过正则表达式收集 HTML 链接中的文本?

如何使用正则表达式识别特定模式之间的单词:Oracle?

正则表达式识别最近到 2018 年的年份