You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则匹配Host与User-Agent且不区分二者出现顺序?

正则匹配相邻但顺序不定的Host和User-Agent值

需要解析Host和User-Agent的对应值,二者始终相邻但顺序不固定(可能Host在前,也可能User-Agent在前),要求避免使用Regex1|Regex2这类重复正则的写法,此前尝试正向预查未成功。

示例内容

示例1

Word1
Host:10.1.1.2
User-Agent: Microsoft Office/16.0 (Windows NT)
Word2

示例2

Word1
User-Agent: Microsoft Office/16.0 (Windows NT)
Host:10.1.1.2
Word2

当前正则代码

([^H]*(?:H(?!ost:)[^H]*)*Host:(?<IP>[^\]*)\)([^U]*(?:U(?!ser-Agent:)[^U]*)*User-Agent:(?<UserAgent>[^\]*)\)

解决方案

可以结合正向预查和重复匹配组实现无需重复正则的写法,兼容两种顺序的匹配:

(?=.*Host:)(?=.*User-Agent:)(?:(Host:(?<IP>\S+)|User-Agent:(?<UserAgent>.+))\s*){2}

正则说明

  1. 正向预查校验:(?=.*Host:) 和 (?=.*User-Agent:) 确保文本中同时存在两个目标关键字,避免匹配不完整的情况。
  2. 重复匹配逻辑:(?:(Host:(?<IP>\S+)|User-Agent:(?<UserAgent>.+))\s*){2} 重复两次匹配单元,每次匹配其中一个关键字及其对应值,\s* 匹配关键字之间的空白(包括换行),自然兼容两种顺序。
  3. 命名捕获组:(?<IP>\S+) 捕获Host的IP值(\S+ 匹配非空白字符,若Host值含空白可替换为[^\n]+匹配整行内容),(?<UserAgent>.+) 捕获User-Agent的完整值。

适配调整

  • 若需严格匹配相邻两行(排除中间空白行),可将\s*替换为\n。
  • 若目标值格式特殊,可针对性调整捕获组内的匹配规则(比如IP可替换为\d+\.\d+\.\d+\.\d+做精准匹配)。

内容的提问来源于stack exchange,提问作者moody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:47:26