gpt4 book ai didi

regex - Elasticsearch Regex匹配以一个字符串开头但不以另一个字符串结尾的url,而无需前后查找

转载 作者:行者123 更新时间:2023-12-02 23:32:27 25 4
gpt4 key购买 nike

我有两组采用以下格式的字符串

http://example.com/foo/something



http://example.com/foo/something/something-else/bar/1

在example.com,foo和bar固定的地方,某些东西可以是任何字符串,而1是任何数字。

我想使用正则表达式来匹配第一种格式(它们必须以 http://example.com/foo/开头)而不是第二种格式的字符串。排除项可能在斜杠,“bar”字符串或数字结尾处。

我不支持向前看或往后看。

最好的方法是什么?

应与匹配的字符串的示例

http://example.com/foo/apple
http://example.com/foo/bear-bear
http://example.com/foo/cake-cake

不匹配的字符串示例

http://example.com/baa/apple
http://example.com/foo/apple/cake/bar/1
http://example.com/foo/bear-apple/camel/bar/2

数据集中不存在的字符串的示例
(因此,它们是否匹配并不重要)

http://example.com/foo/bear-bear/cake/bar/two
http://example.com/foo/bear/camel/tar/2
http://example.com/foo/bear-bear/camel
http://example.com/foo/bear/camel/
http://example.com/foo/bear-bear/camel/tar/2

更新

事实证明,我正在使用的正则表达式引擎来自Elasticsearch,因此此文档(以及我们的开发人员之一)很有帮助: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html

最终解决方案是:
(http://example.com/foo.*)&~(.*bar.*)

最佳答案

您所有的示例都具有一个特定的前缀URL,后跟一个唯一的path元素。如果这是一般情况,则可以通过简单地查找前缀URL,后跟不包含路径分隔符的单词,后跟EOL来实现。

您没有说要使用什么引擎,所以下面是bash中Gnu grep的示例:

grep -e'^ http://example.com/foo/[ ^ /] \ + $'

Bash使示例易于阅读,因为单引号意味着很少需要转义的字符。在我的示例中,唯一的异常(exception)是+字符。

关于regex - Elasticsearch Regex匹配以一个字符串开头但不以另一个字符串结尾的url,而无需前后查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34904085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com