[英]Can I declare preference over matching terms in a regular expression?
有没有办法在正则表达式中声明首选项 ?
例如,假设我要搜索以下术语:
cat eats mouse
我有以下文字:
I saw yesterday a big mouse in our house. Why? We have a cat!A cat eats mouse.Right?
我想要一个与该部分特别是A cat eats mouse
这一部分匹配的正则表达式。
即,尽管术语存在于其他部分中,但是该句子是更好的匹配,即是首选。
但是如果这部分丢失的话, I saw yesterday a big mouse in our house
。 或者We have a cat
。
可以用正则表达式表示吗?
不,正则表达式不是正确的工具。
您可以使用正则表达式(尽管更普通的子字符串搜索可能更合适)来查找您要查找的每个单词,并为匹配项分配权重(基于每个术语的出现次数,所有术语的出现,相对顺序)在正则表达式之外)。
但是您的最终目标太模糊了,不够正则化 -您不仅需要正则表达式。
我不确定您要应用哪种模式,但是请注意,使用竖线编写替代项时,第一个匹配项将成功。 这意味着,如果您都拥有(<pattern1>|<pattern2>)
类的东西(<pattern1>|<pattern2>)
如果它们都匹配),则优先级将赋予<pattern1>
因为这是将被检查的第一个。
正则表达式基本上是用于匹配常规语言的单词,在大多数编程上下文中,然后提取匹配单词的一部分,并将其用于程序中。 但是,您的匹配模式是上下文相关的(匹配器需要记住之前和之后的内容),因此不依赖于正则表达式的表达能力。
解决问题的一种方法可能是使用句子标记器提取句子,然后根据单词withing以及最终的构象对每个句子评分。 您的问题似乎与自动文本摘要问题高度相关。 因此,您可以寻找有关此方面的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.