我想在第二个模式之后匹配10个字符:
我的字符串:
www.mysite.de/ep/3423141549/ep/B104RHWZZZ?something
我想要匹配的内容:
B104RHWZZZ
当前匹配的正则表达式:
B104RHWZZZ?something
当前,我的正则表达式是这样的:
(?<=/ep/)(?:(?!/ep/).)*$.
有人能帮我改变正则表达式,它只匹配第二个"/ep/"之后的10个字符("B104RHWZZZ" ?
这取决于您允许匹配哪些字符。如果你想要允许10个非空白字符——不是/
或?
,那么你可以使用;
(?<=/ep/)[^/?s]{10}(?=[^/s]*$)
(?<=/ep/)
断言/ep/
直接向左[^/?s]{10}
匹配10次除/
和?
以外的任何非空白字符(?=[^/s]*$)
断言右侧不再出现/
Regex演示
或者匹配除/
?
&
以外的1+字符,而不是恰好匹配10个字符:
(?<=/ep/)[^/?&s]+(?=[^/s]*$)
Regex演示
这将匹配字符串作为匹配组1:ep/w+/ep/(w+)
https://regex101.com/r/9tUjxG/1
虽然遍历可以使这个表达式更复杂,这样您就不需要匹配组,但它使(以我的经验)表达式难以阅读、理解和维护/扩展。
这就是为什么我总是保持正则表达式尽可能简单的原因。