匹配 statsD 格式的正则表达式
Reg-ex to match statsD Format
我正在使用以下正则表达式来匹配 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+ 个单词或 .
个字符
:
- 冒号
[^|]+
- 否定字符 class 匹配 1+ 个非 |
字符
\|
- 一个 |
字符
[^|]+
- |
以外的 1+ 个字符
(?:\|#(?:[\w.]+:[^,\n]+(?:,|$))*)?
- 可选的非捕获组匹配 1 次或 0 次出现
\|#
- |#
子字符串
(?:[\w.]+:[^,\n]+(?:,|$))*
- 连续重复 0 次或多次
[\w.]+:
- 1+ 个单词或 .
个字符,然后是 :
[^,\n]+
- 除了 LF 之外的 1+ 个字符(我猜它在这里用于调试目的)和 ,
(?:,|$)
- ,
或字符串结尾
$
- 字符串结尾。
我正在使用以下正则表达式来匹配 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+ 个单词或.
个字符:
- 冒号[^|]+
- 否定字符 class 匹配 1+ 个非|
字符\|
- 一个|
字符[^|]+
-|
以外的 1+ 个字符
(?:\|#(?:[\w.]+:[^,\n]+(?:,|$))*)?
- 可选的非捕获组匹配 1 次或 0 次出现\|#
-|#
子字符串(?:[\w.]+:[^,\n]+(?:,|$))*
- 连续重复 0 次或多次[\w.]+:
- 1+ 个单词或.
个字符,然后是:
[^,\n]+
- 除了 LF 之外的 1+ 个字符(我猜它在这里用于调试目的)和,
(?:,|$)
-,
或字符串结尾
$
- 字符串结尾。