我需要一个正则表达式来替换URI中会产生高基数情况的部分。
基本上,如果URI的段包含任何非a-zA-Z
字符(/
除外),请将其替换为*
示例:
$ replace("/first/12ab34/B1a234/12B3a/1234/second/A789B-89d", r'(?i)[a-z]*\d+(?i)[a-z]*',"*")
结果单位:"/first/**/**/**/*/second/*-*"
很接近了,但我需要"/first/*/*/*/*/second/*"
多次替换是可以接受的。有正则表达式高手愿意帮忙吗?这是用Rust写的vrl(vector.dev)。vrl不支持任何形式的查找。
3条答案
按热度按时间qlfbtfca1#
对于示例数据,可以使用
(?i)
不区分大小写的内联修饰符[a-z]*
匹配可选字符a-z\d
匹配单个数字[\da-z]*
匹配可选数字或字符a-z(?:-[\da-z]+)*
可选地将-
和1+重复一个数字或a-zRegex demo
pxq42qpu2#
用途
参见regex proof。
解释
9udxz4iz3#
第一个月
regex demo
解释
[^/a-zA-Z]
-正好一个“非a-zA-Z字符(/除外)”[^/]*
-零个或多个非“/”字符中间部分将保证路径元素至少有一个“non a-zA-Z”字符。侧边部分将匹配所有内容,直到包含“/”(不包括)。所有这三个部分一起将匹配整个路径元素,其中至少有一个“non a-zA-Z”字符。
更多测试
:
匹配为非a-zA-Z字符//