特定于具有强制元素的特定消息模式的正则表达式
Regular Expression specific to a particular message pattern with mandatory elements
因为我对正则表达式很陌生,所以我正在寻找一个正则表达式来验证整个字符串是否由 |
分隔,并且会有 $
后跟的值一个整数。
有效值:
ABC=|CDE=|Msg=|Ph.No=|TIME=
ABC=|CDE=|Msg123=|Ph.No=|TIME_23=
abc=|123=|cfg=|Ph.No=
无效值:
ABC=CDE=Msg=
ABC=2|CDE=1|Msg123=|Ph.No=|TIME_23=
abc|123|cfg|Ph.No=
Msg123=$ |Ph.No=$ |TIME_23=5
abcdefgh|1234|eghjik
Msg123=$*|Ph.No=$()|TIME_23=
Msg123=$a|Ph.No=$b|TIME_23=$p
这将为您完成:
^[\w.]+=$\d+(?:\|[\w.]+=$\d+)*$
它匹配至少一个单词字符 或 .
后跟一个=
, $
和一个数字。然后,可选地,|
后跟第一个序列。 可选部分可以重复任意次数。
编辑
允许多位数。
编辑 2
如果您需要检查范围是 0-12,请使用
^[\w.]+=$(?:\d|1[012])(?:\|[\w.]+=$(?:\d|1[012]))*$
编辑 3
由于 OP 需要纯 POSIX,因此 我们 最终得到:
^[A-Za-z0-9_.]+=$(1[012]|[0-9])(\|[A-Za-z0-9_.]+=$(1[012]|[0-9]))*$
没有 shorthand 个字符 类 也没有非捕获组。
因为我对正则表达式很陌生,所以我正在寻找一个正则表达式来验证整个字符串是否由 |
分隔,并且会有 $
后跟的值一个整数。
有效值:
ABC=|CDE=|Msg=|Ph.No=|TIME=
ABC=|CDE=|Msg123=|Ph.No=|TIME_23=
abc=|123=|cfg=|Ph.No=
无效值:
ABC=CDE=Msg=
ABC=2|CDE=1|Msg123=|Ph.No=|TIME_23=
abc|123|cfg|Ph.No=
Msg123=$ |Ph.No=$ |TIME_23=5
abcdefgh|1234|eghjik
Msg123=$*|Ph.No=$()|TIME_23=
Msg123=$a|Ph.No=$b|TIME_23=$p
这将为您完成:
^[\w.]+=$\d+(?:\|[\w.]+=$\d+)*$
它匹配至少一个单词字符 或 .
后跟一个=
, $
和一个数字。然后,可选地,|
后跟第一个序列。 可选部分可以重复任意次数。
编辑
允许多位数。
编辑 2
如果您需要检查范围是 0-12,请使用
^[\w.]+=$(?:\d|1[012])(?:\|[\w.]+=$(?:\d|1[012]))*$
编辑 3
由于 OP 需要纯 POSIX,因此 我们 最终得到:
^[A-Za-z0-9_.]+=$(1[012]|[0-9])(\|[A-Za-z0-9_.]+=$(1[012]|[0-9]))*$
没有 shorthand 个字符 类 也没有非捕获组。