繁体   English   中英

我可以在正则表达式中声明优先于匹配项吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM