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

如何用PCRE正则匹配Markdown中格式不符的geo:链接?

适用于grep -P的PCRE正则方案

正则表达式

\(geo:(?![-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)\))[^)]+\)

完整grep命令

grep -rP '\(geo:(?![-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)\))[^)]+\)' --include='*.md' ./

逻辑说明

  1. \(geo::精准匹配Markdown中的(geo:链接开头(转义括号避免被正则引擎解析为捕获组)
  2. 负前瞻(?!...):断言当前位置后不是合规的坐标格式加闭合括号,直接排除所有正确的geo链接
  3. [^)]+\):捕获从geo:之后到下一个)的全部内容,确保完整提取错误格式的geo链接

匹配的错误场景示例

  • 冒号后带空格:(geo: 31.2304,121.4737)
  • 坐标用空格分隔:(geo:31.2304 121.4737)
  • 纬度超出范围:(geo:91.0,121.4737)
  • 经度超出范围:(geo:31.2304,190.0)
  • 坐标格式无效:(geo:abc,123)

注意事项

  • 部分系统(如macOS)默认grep不支持PCRE,需安装ggrep(brew install grep)后使用ggrep -P
  • -r参数用于递归搜索目录下所有文件,--include='*.md'限制仅检索Markdown文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:13:18