簡體   English   中英

Reg-ex匹配statsD格式

[英]Reg-ex to match statsD Format

我使用以下reg-ex來匹配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

有幫助嗎?

RegEx 101嘗試 - https://regex101.com/r/H8vQTa/1/

你可以用

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

請參閱正則表達式演示

關鍵是你只匹配任何一個字符. 兩個之間| s,我建議匹配除了|之外的一個或多個字符 在那里,通過在可選的非捕獲組中包裝\\|#(?:[\\w.]+:[^,\\n]+(?:,|$))*使其余部分可選, (?:...)?

細節

  • ^ - 字符串的開頭
  • [\\w.]+ - 1+字或. 字符
  • : - 冒號
  • [^|]+ - 匹配1+非|的否定字符類 字符
  • \\| - a | 燒焦
  • [^|]+ - 除了| 1+個字符
  • (?:\\|#(?:[\\w.]+:[^,\\n]+(?:,|$))*)? - 一個匹配1或0次出現的可選非捕獲組
    • \\|# - |# #substring
    • (?:[\\w.]+:[^,\\n]+(?:,|$))* - 0或更多連續重復
      • [\\w.]+: - 1+字或. chars然后:
      • [^,\\n]+ - 1+字符比LF其他(I估計是用於調試目的在這里)和,
      • (?:,|$) - ,或結束字符串
  • $ - 結束字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM