如何通过正则表达式识别文本中的段落?
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();
【讨论】:
以上是关于如何通过正则表达式识别文本中的段落?的主要内容,如果未能解决你的问题,请参考以下文章
Python正则表达式仅根据正则表达式替换段落中的特定行而不是整个文件