gpt4 book ai didi

java - 匹配 statsD 格式的正则表达式

转载 作者:行者123 更新时间:2023-11-29 04:17:49 24 4
gpt4 key购买 nike

我正在使用以下正则表达式来匹配 StatsD 数据格式 -

^[\w.]+:.+\|.\|#(?:[\w.]+:[^,\n]+(?:,|$))*$

这满足以下任何格式 -

performance.os.disk:1099511627776|g|#region:us-west-1,datacenter:us-west-1a

performance.os.disk:1099511627776|g|#

performance.os.disk:1099511627776|g|#region:us-west-1

但我无法将它与 -

datastore.reads:9876|ms

有什么帮助吗?

尝试正则表达式 101 - https://regex101.com/r/H8vQTa/1/

最佳答案

你可以使用

^[\w.]+:[^|]+\|[^|]+(?:\|#(?:[\w.]+:[^,\n]+(?:,|$))*)?$
^^^^^^^^ ^^

参见 regex demo

关键是你只匹配任何字符与 . 在两个 | 之间,我建议匹配 1 个或多个 | 以外的字符在那里,并通过将 \|#(?:[\w.]+:[^,\n]+(?:,|$))* 包装在一个可选的非捕获组,(?:...)?

详情

  • ^ - 字符串的开始
  • [\w.]+ - 1+ 个单词或 . 个字符
  • : - 一个冒号
  • [^|]+ - 匹配 1+ 个非 | 字符的否定字符类
  • \| - | 字符
  • [^|]+ - |
  • 以外的 1+ 个字符
  • (?:\|#(?:[\w.]+:[^,\n]+(?:,|$))*)? - 可选的非捕获组匹配 1 次或 0 次出现
    • \|# - |# 子串
    • (?:[\w.]+:[^,\n]+(?:,|$))* - 0 次或多次连续重复
      • [\w.]+: - 1+ 个单词或 . 个字符,然后是 :
      • [^,\n]+ - 除了 LF(我猜它在这里用于调试目的)和 ,
      • 以外的 1+ 个字符
      • (?:,|$) - , 或字符串结尾
  • $ - 字符串结尾。

关于java - 匹配 statsD 格式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51188982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com