作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下网址:
https://test.com/welcome/
https://sub.test.com/home/edit
https://test.com/home/view?view=column
https://test.com/home/view/?view=list
我想捕获以下结果:
welcome
edit
view
view
现在我有 (?:\/[^\/]+)+?\/(.*?)/{0,1}$
, (?:\/[^\/]+)+?(?:.*\/)(.*?)\?{0,1}$
和 (?:\/[^\/] +)+?(?:.*\/)(.*)/\?.*$
但它们很复杂,我似乎无法将它们组合起来。
最佳答案
在 Splunk 中,您可以使用正则表达式来匹配所有文本,直到最后一次出现 /
后跟除 /
之外的任何 1+ 个字符, ?
或#
并且可以使用命名捕获组捕获这 1 个以上的字符:
".*/(?<lasturlpart>[^/?#]+)"
请参阅regex demo 。请注意\n
或(?:/?(?:[#?].*|$))
在 my top comment在演示中使用,以确保匹配不会跨行溢出,因为演示中的输入是单个多行字符串,而您将针对独立字符串使用正则表达式。
图案详细信息
.*
- 除换行符之外的任何 0 个或多个字符,尽可能多/
- 一个/
字符 (?<lasturlpart>[^/?#]+)
- 命名捕获组匹配除 /
之外的 1 个或多个字符, ?
和#
.关于regex - 捕获之间或之后/之前的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60551904/
我是一名优秀的程序员,十分优秀!