当前位置: 首页 > 知识库问答 >
问题:

如何使前导令牌在RegexNER表达式中可选?

赵骏奇
2023-03-14

我有一个非常简单的用例,在这个用例中,我需要向两个单词的序列中添加一个NER注释,其中第一个单词是可选的。
例如,我需要将“净收入”和“收入”短语注释为相同的NE类型。

使用普通正则表达式可以使用以下表达式:

([Nn]et\s)?[Ii]ncome

但是,在RegexNER中它不起作用。
以上regex在RegexNER中的效果是,在两个序列中都注释了单词“收入”,但在序列“净收入”中没有注释单词“净”,这不是我需要的结果。

这在某种程度上是意料之中的,因为知道RegexNER匹配的是标记序列上的正则表达式序列,而不是单个字符串上的单个正则表达式

但是,下面的语法也不起作用:

([Nn]et)? [Ii]ncome

这个表达式的效果是,序列“净收入”被全部注释,但只有“收入”没有被注释。
这是出乎意料的,因为这似乎是一个非常简单的用例。
我尝试了不同的方法将初始标记表示为一个组,也尝试了不同的量词--但仍然不起作用。

任何有关使第一个令牌可选的帮助都将不胜感激。

共有1个答案

郎经纶
2023-03-14

让我来回答我自己的问题。这不是一个直接的解决方案,而是一个变通方法。以下表达式可以使用,但只能使用TokensRegex,不能使用regexner:
/[Nn]et/?/[Ii]ncome/我不知道为什么会这样,也许RegexNER不像TokensRegex那样支持标记级别的量词。

 类似资料:
  • 问题内容: 我有一些用生成的uuid1字符串命名的图像。例如81397018-b84a-11e0-9d2a-001b77dc0bed.jpg。我想使用“查找”命令找出所有这些图像: 但这是行不通的。正则表达式有问题吗?有人可以帮我吗? 问题答案: 请注意,由于与整个路径匹配,因此需要在开头指定。 例: 我的find版本:

  • 我在尝试使用lambda表达式时遇到了这个错误。

  • 问题内容: 使用Sequelize ORM for Node.js,如何在select语句中使用CASE / WHEN表达式? 根据Sequelize文档,我看不到任何参考或示例来使用SQL表达式CASE。这可能吗? 这是我的示例: 的SQL 续集 数据库结构 预期结果: 问题答案: 您可以使用Sequelize.literal在建立特殊查询

  • 本文向大家介绍如何在TestNG中使用正则表达式?,包括了如何在TestNG中使用正则表达式?的使用技巧和注意事项,需要的朋友参考一下 我们在TestNG中使用正则表达式来使用以某种模式命名的一组测试方法。 示例 Testng xml文件。 所有名称开头为Payment的测试方法都将从回归套件中排除。 示例 Login()将被执行,但是所有以名字Payment开头的方法都将被排除在执行之外。这是使

  • 我需要的算法,将检查是否给定的表达式是中缀,后缀或前缀表达式。我尝试了一种方法,通过检查字符串的第一个或最后两个项,例如。 AB如果字符串的第一个索引中有一个运算符,那么它就是一个前缀 AB如果字符串的最后一个索引中有一个运算符,那么它就是一个后缀 否则它就是一个中缀。 但是感觉不太合适,所以请建议我一个更好的算法。

  • 问题内容: 我有很多Python字符串如,,,和我想要拆分这些字符串,这样他们将在一个列表,格式,等我已经使用了很多不同的方法分割,但我想我需要只需在有数学符号(例如)的地方执行拆分。我还需要去除空白。 目前,我正在使用返回的代码。相反,我想回来。 问题答案: 从字符串中删除空格后,应拆分字符集 :