正则表达式选择匹配括号的单词

时间:2020-07-06 07:32:48

标签: javascript regex

我需要使用javascript使用正则表达式提取完整表单

我尝试过

(\w+\s*[^a-z^A-Z]*){3}\s*\([A-Z]*\)

但是当存在诸如此类的完整表格时,提取失败

大多数常见误操作(MCM) (仅选择粗体)

下面是要测试的文本:

从生物医学文献中自动提取首字母缩写词定义对的任务已经完成

最常见的误接(MCM) 经过研究,几乎专门针对英语 在过去的几十年中,使用了自然语言处理(NLP)的技术。这个部分 167 提出了一些方法和技术 被应用于首字母缩写词识别任务。 Taghva和Gilbreth(1999)提出了首字母缩写词7'- $ **** Finding Program(AFP)

,基于 模式匹配。他们的程序寻求 首字母缩写词候选,以大写字母显示 话。他们为每个计算启发式分数 通过将单词分类为以下内容来竞争定义: (1)停用词(“ the”,“ of”,“ and”),(2)带连字符的词(3)普通词(不包含该词的词) 属于以上任何类别)和(4) 首字母缩写词本身(因为首字母缩写词可以 有时是定义的一部分)。法新社 利用最长公共子序列(LCS) 算法(Hunt和Szymanski,1977)找到所有 首字母缩写词可能与文本对齐, 然后是基于的简单评分规则 在比赛中。他们的表现报告 实验是:召回率达86%,精度达98%

1 个答案:

答案 0 :(得分:2)

您可以使用3个捕获组,并向与这些单词的第一个字母匹配的组进行反向引用,而不是重复该组3次。

\b(\w)[\w']*[^a-zA-Z()]* (\w)[\w']*[^a-zA-Z()]* (\w)[\w']*[^a-zA-Z()]* \(\1\2\3\)
  • \b字边界
  • (\w)匹配第1组
  • 中的单个单词char
  • [\w']*匹配单词char或'的0+次
  • [^a-zA-Z()]* 匹配0倍以上所列字符以外的任何字符,然后匹配一个空格
  • (\w)[\w'][^a-zA-Z()] 与上述第2组
  • 相同
  • (\w)[\w'][^a-zA-Z()] 与上述第3组
  • 相同
  • (\1\2\3)在括号之间,对捕获组使用3个反向引用

Regex demo


您还可以通过将'添加到字符类中并重复0次以上[\w']*

来更新模式。

您可以使用允许匹配的字符扩展字符类。

\b(?:\w[\w']* [^a-zA-Z]*){3} ?\([A-Z]{3}\)
  • \b字边界
  • (?:非捕获组
    • \w[\w']* 匹配一个char字符,并将除char或'以外的任何char匹配0+次,然后匹配一个空格
    • [^a-zA-Z]*匹配除a-zA-Z以外的任何字符0+次
  • ){3} ?重复3次并匹配可选空间
  • \([A-Z]{3}\)匹配括号中3个出现的A-Z

Regex demo