gpt4 book ai didi

java - 排除字符串部分时的正则表达式反向引用

转载 作者:行者123 更新时间:2023-11-30 09:30:09 26 4
gpt4 key购买 nike

我有一个正则表达式,我正在尝试使用它来重写传入的 REST url,但当 URL 的一部分被排除在外时,我陷入了一个用例。

这是我目前使用的正则表达式:

^(/[^/]+/(?:books))/([^/]+?)(?:/(?:(?!page).+?))?(?:/page/(\\d+))?$

例如,我使用 "$1 - $2 - $3" 作为编写新 URL 的部分。

以下是正确运行的示例...

"/mySite/books/topic1/page/2" results in "/mySite/books - topic1 - 2"
"/mySite/books/topic1/subtopic1/page/2" results in "/mySite/books - topic1 - 2"

所有上述工作均按预期进行。问题是当 URL 排除了 URL 的“topic1”部分时,结果不是我需要的。示例:

"/mySite/books/page/2" results in "/mySite/books - page - "

我需要的是$2为空,因为没有主题,页码还是$3。我需要作为输出...

"/mySite/books/page/2" results in "/mySite/books -  - 2"

我可以在我的正则表达式中更改什么来满足该场景而不破坏现有的正常工作?这是在 Java 中完成的。

最佳答案

您可以尝试使用正则表达式模式

^(/[^/]+/books)/(?:(?!page/)([^/]+)/)?page/(\\d+)$

关于java - 排除字符串部分时的正则表达式反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390006/

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