首页 > 解决方案 > Javascript 从字符串中解析各个部分、段落、图形、标题等文本并替换为书签

问题描述

我正在尝试解析非 xml 标记字符串中的文本中的部分、段落、图形、表格、附录等的特定关键字模式。使用的模式一旦工作,将适用于其中任何一个。如果我有多个句子段落文本,即第 1 句。第 2 句,我会遇到无法理解句子句段的问题。请参阅我正在使用的以下测试字符串。

. 1.11.3 节,1.2 节测试。见稍后部分(?)。1.1 第 1 节。

这个字符串试图解释很多变化:空格和制表符、逗号、没有与数字配对的部分关键字和一个带有 # 后跟一个句点和句点前一个空格的部分。我正在使用https://ww.regexr.com来测试我的正则表达式模式。它会突出显示正确的匹配项,但它会在第 # 节之后的句子末尾处选择句点,但如果句点之前有空格(请参阅上面的测试字符串的结尾),则不会。因此,我想将“Section 1.11.3”、“section 1.2”和“section 1”提取为字符串。但是,我会得到“第 1.2 节”。取而代之的是句末句号。任何没有数字的“部分”也应该跳过。

我的模式是,/[Ss]ection(\s+[0-9]+(([.]){0,1}[0-9]*)*)/gm

如何消除 1.2 之后的时间段作为比赛的一部分?

提取选定关键字后,它们将被 Word 书签和超链接内容替换。

标签: javascript

解决方案


以下是用于我上面的测试字符串的正则表达式序列。必须颠倒排序以首先找到要匹配的最长字符串,如果不匹配,则通过 (|) 匹配最短字符串。有人会认为排序无关紧要,但确实如此。

要查找所有“选择”组合,模式为 [Ss]ection\s+((([0-9]+([.]{0,1}[0-9]+) )+)|([0- 9]+[^.] ))

要找到所有带有数字的“选择”组合,只有模式是,

[Ss]ection\s+((([0-9]+([.]{0,1}[0-9]+) ) )|([0-9]+[^.]*))


推荐阅读