我想知道是否有人可以帮我解决这个问题,我目前正试图进行一种模糊匹配。
基本上我不想从非结构化文本中获取关系,并确定这些关系的常见模式。然而,输入字符串有点随意 - 通常是人类产生的输入。
E.g。这两个输入字符串:
ENTITY通常比ENTITY
更大ENTITY ......还有一些其他词......大于ENTITY
我已成功将这两个字符串与以下正则表达式匹配:
(ENTITY)是(。+?(?=更大))大于(ENTITY)
但是从那以后。+?匹配到达更大的一切,在两者之间可以有任意数量的单词"是"并且"更大"。这导致在某些情况下的错误匹配,因此我想限制"单词的数量"介于"之间"和#34;更大"。
我将一个单词定义为至少一个非空格,后跟至少一个空白字符。我知道这实际上不是一个字,但出于我的目的,它应该没问题。如果我想匹配,例如最多5个字,这将是
(\ S + \ s +){0,5}
将此与前一个正则表达式相结合可以将我带到
(ENTITY)是((\ S + \ s +){0,5}?(?=更大))大于(ENTITY)
但这没有用。有人可以就此提出建议吗?我真的能与正则表达式匹配吗?
这是一个Java项目。为了便于阅读,我已经删除了正则表达式模式中的转义反斜杠。