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

如何编写Regex按空格分割字符串并排除括号内空格,处理指定User-Agent

刚好之前处理过类似的User-Agent解析需求,这个问题的核心是要忽略括号内的空格进行分割,同时还要去掉括号本身,我来给你详细说下解决方案:

正则表达式思路

我们需要匹配两种类型的内容,然后对匹配结果做简单处理:

  • 括号包裹的内容:比如(Windows NT 6.1),要把它作为一个整体,之后去掉首尾的括号
  • 括号外的普通元素:比如Mozilla/5.0,直接保留即可

对应的正则表达式是:(\([^)]+\)|[^ ]+)

  • \([^)]+\):匹配从(开始到)结束的完整括号内容([^)]+确保只匹配到第一个),不会跨括号)
  • [^ ]+:匹配连续的非空格字符,也就是括号外的独立元素

两种输出的实现

针对你给出的User-Agent字符串:

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

1. 取分割后的前2个元素

用正则匹配后,提取前两个结果并处理括号:

  • 第一个匹配项:Mozilla/5.0(直接保留)
  • 第二个匹配项:(Windows NT 6.1)(去掉首尾括号后得到Windows NT 6.1)

最终拼接结果:Mozilla/5.0 Windows NT 6.1

2. 完整分割结果

把所有匹配到的结果都去掉括号后,用空格拼接:
处理后的元素列表:

  • Mozilla/5.0
  • Windows NT 6.1
  • AppleWebKit/537.36
  • KHTML, like Gecko
  • Chrome/65.0.3325.181
  • Safari/537.36

最终完整结果:Mozilla/5.0 Windows NT 6.1 AppleWebKit/537.36 KHTML, like Gecko Chrome/65.0.3325.181 Safari/537.36

示例代码(Python)

这里用Python实现整个流程,方便你直接测试:

import re

# 目标User-Agent字符串
user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
# 定义正则模式
pattern = re.compile(r'(\([^)]+\)|[^ ]+)')

# 获取所有匹配项并处理括号
processed_elements = [item.group().strip('()') for item in pattern.finditer(user_agent)]

# 输出前2个元素的结果
print("前2个元素结果:", ' '.join(processed_elements[:2]))
# 输出完整分割结果
print("完整分割结果:", ' '.join(processed_elements))

注意事项

这个方案仅适用于单层括号的场景,也就是括号内部没有嵌套其他括号的情况。你的需求里User-Agent的括号都是单层的,所以完全适用。如果遇到嵌套括号的复杂场景,就需要使用支持递归的正则引擎(比如Python的regex库)来处理了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:48:29