gpt4 book ai didi

java - 使用正则表达式进行键=值对验证

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:03 24 4
gpt4 key购买 nike

需要使用正则表达式验证以下字符串:

Key=Value;Key=Value;Key=Value and so on

例如:MAC 地址=192.167.235.19; zproduct_id=XYZ

  1. 键和值可以包含除 = 和 ; 之外的任何内容
  2. 键和值都不能为空或为空
  3. 输入字符串不以;结尾

尝试使用以下正则表达式

Pattern pattern1 = Pattern.compile("(([^=;]*)=([^=;]*);?)+");
Matcher matcher = pattern1.matcher("MAC Address=192.167.235.19; zproduct_id=XYZ");
if (matcher.matches())
System.out.println("Match");
else
System.out.println("NOT");

下面是上述正则表达式与输入字符串的验证结果

Input String                                      Validation Result  Expected Result

1. MAC Address=192.167.235.19 Match Match
2. MAC Address=192.167.235.19; zproduct_id=XYZ Match Match
3. MAC Address=192.167.235.19; Match Not
4. MAC =Address=192.167.235.19; zproduct_id=XYZ Match Not
5. MAC Address=; zproduct_id=XYZ Match Not
6. MAC Address= ; zproduct_id=XYZ Match Not
7. =192.167.235.19 ; zproduct_id=XYZ Match Not

请建议一个正则表达式,该表达式将验证上述所有场景的预期结果。

提前致谢

最佳答案

这有点复杂。

编辑这强制Key必须是一个不是空格(也不是空)的值。
否则,=;=;=;=;=;=;=;= 将有效。
所以这将是有效的 Key1 = ;Key2=val; Key1=val

 # "^(?:\\s*((?:[^=;\\s]+\\s+)*[^=;\\s]+)\\s*=\\s*([^=;]*)(?:;(?!\\s*$)|$))+$"

^
(?:
\s*
( # (1 start)
(?: [^=;\s]+ \s+ )*
[^=;\s]+
) # (1 end)
\s*
=
\s*
( [^=;]* ) # (2)
(?:
; (?! \s* $ )
| $
)

)+
$

Edit2这强制KeyValue不能是空格(也不能是空)。

 #   "^(?:\\s*((?:[^=;\\s]+\\s+)*[^=;\\s]+)\\s*=\\s*((?:[^=;\\s]+\\s+)*[^=;\\s]+)\\s*(?:;(?!\\s*$)|$))+$"

^
(?:
\s*
( # (1 start), Key
(?: [^=;\s]+ \s+ )*
[^=;\s]+
) # (1 end)
\s*
=
\s*
( # (2 start), Value
(?: [^=;\s]+ \s+ )*
[^=;\s]+
) # (2 end)
\s*
(?:
;
(?! \s* $ )
| $
)
)+
$

关于java - 使用正则表达式进行键=值对验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20358055/

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