我想在给定文本上查找 /
符号并替换为 *
符号。
http://localhost:7070/home/test/mobile:device.testdevice.id1_123.id2_456.id3_ab-c.CONSTANT_formula:map/TreeMap.json
这里的CONSTANT是固定的,不会改变,但是CONSTANT后面可以有任何字符。我想在 url 中找到 CONSTANT 并查找 /
符号并将其替换为 *
符号。
类似这样的 - http://localhost:7070/home/test/mobile:device.testdevice.id1_123.id2_456.id3_ab-c.CONSTANT_formula:map*TreeMap.json
我正在尝试使用下面的正则表达式,但当我使用一个或多个标识符时,它会匹配 CONSTANT 之后的所有内容
^CONSTANT(.+)
有没有办法找到/符号并用*符号替换?
最佳答案
使用 mod_rewrite
规则,您可以在关键字 CONSTANT
之后将 /
替换为 *
:
RewriteCond %{REQUEST_URI} ^(/.*CONSTANT[^/]*)/(.*) [NC]
RewriteRule ^ %1*%2 [L,NE,R]
请注意,替换 URL 后它将执行外部重定向。
我们在 RewriteCond
中使用 2 个捕获组:
^(/.*CONSTANT[^/]*)
匹配CONSTANT
之前的所有内容,后跟 0 个或多个非/
- 然后我们匹配
/
(.*)
:最后我们匹配第二个捕获组中的所有其他内容
关于regex - 如何替换正则表达式中的特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73412940/