[英]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.