【问题标题】: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 我的文字是随机的,它取决于我程序中的用户输入。因为也许我们在文字中没有标题。

标签: c# regex winforms


【解决方案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();

【讨论】:

    猜你喜欢
    • 2014-12-20
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2018-10-13
    相关资源
    最近更新 更多