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

如何编写正则表达式匹配test:property自定义模式及多值场景

最终可用正则

1. 完整匹配目标属性片段(通用版,适配所有正则引擎)

该正则可精准匹配test:property对应的完整片段,不会错误粘连前后其他属性内容:

\btest:property:(?:\()?\w+:\w+(?:\sOR\s\w+:\w+)*(?:\))?\b

2. 支持重复捕获组的引擎版本

如果你的开发环境使用支持重复捕获组的正则引擎(如.NET、Python第三方regex模块),可直接用以下正则,所有TypeName会被捕获到第2个及之后的分组中:

\b(test:property:(?:\()?(\w+:\w+)(?:\sOR\s(\w+:\w+))*(?:\))?)\b

如果使用不支持重复捕获的引擎(如JavaScript、Python标准re库),可先用通用版正则匹配出完整目标片段,再用\w+:\w+在匹配结果中提取所有TypeName即可。


正则规则说明

  • \b:单词边界,确保匹配到的是独立属性片段,不会和前后其他属性内容粘连
  • test:property::固定匹配目标属性名加冒号
  • (?:\()?:非捕获组,可选匹配左括号,?:标识该分组不需要单独捕获
  • \w+:\w+:匹配TypeName格式要求:1个以上单词字符+冒号+1个以上单词字符
  • (?:\sOR\s\w+:\w+)*:非捕获组,匹配0次或多次「空格+OR+空格+TypeName」结构,适配多值场景
  • (?:\))?:非捕获组,可选匹配右括号

示例匹配结果

针对你给出的4个测试场景,该正则输出完全符合预期:

序号匹配内容提取到的TypeName
1test:property:schema:Personschema:Person
2test:property:(schema:Person OR schema:Organization OR schema:Place)schema:Person、schema:Organization、schema:Place
3test:property:(schema:Person)schema:Person
4test:property:schema:Personschema:Person

如果需要做属性和值替换,可先匹配到完整片段后,替换前缀test:property:为目标属性名,再将提取到的TypeName替换为对应目标值即可。


内容的提问来源于stack exchange,提问作者Stuart Leyland-Cole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:48:00