只需要匹配正则表达式中数据包中的第二次出现

Need to match only second occurrence from a packet in Regex

我有一个上面数据包的场景,我只想在正则表达式中匹配第二个字段(然后我只替换这个值而不破坏数据包),我已经用这个正则表达式完成了第一个值并且需要第二和第三。

/([^/]+)[a-z]

数据包:

GET /First_Random/Second_Random/Third_Random/search_results.php HTTP/1.1

谢谢。

First Part Regex

您可以捕获组中的第一部分,然后使用否定字符匹配第二和第三部分 类 [^

在替换中使用第一个捕获组(通常是 </code> 或 <code>),然后用正斜杠分隔您的替换

^([^/]*/[^/]+/)[^/]+/[^/]+
  • ^ 字符串开头
  • ( 捕获 组 1
    • [^/]*/[^/]+/ 匹配字符串的开头和第一部分直到 /
  • ) 关闭群组
  • [^/]+/[^/]+匹配第二部分和第三部分除以/

Regex demo

可能的替换格式示例

SECOND/THIRD