-3

在 Java 中,我必须使用 RegEx 验证最后包含“~”和“=”的字符串。

例如:

LOCKER=2004-02-23-23.28.22.377655~UCC=0103207031~URY=31/12/9999~URF=23/02/2004~URT=SEREST ISSY LES MO      ~URFC=XX~URFNUMCB=XXXXXXXXXXX~CEB=XXXXX~CEBC=XXXXX~URFN=0001

此字符串格式为KEY1=VALUE~KEY2=VALUE~KEYN=VALUE大写

'~' 作为分隔符

目前,我正在使用一些正则表达式,但它们都是错误的,有人可以帮我吗?谢谢你的先进

4

1 回答 1

1

以下正则表达式应该这样做:

^(?!~)(?:(?:^|~)[^=~]+=[^=~]*)+$

解释

^            Match beginning-of-input, i.e. matching must start at beginning
(?!~)        Input cannot start with `~`
(?:          Repeat 1 or more times:
  (?:^|~)      Match beginning of input or match '~', i.e. match nothing on
               first repetition, and match `~` on each subsequent repetition
  [^=~]+       Match KEY
  =            Match '='
  [^=~]*       Match VALUE (may be blank)
)+
$           Match end-of-input, i.e. matching must cover all input

如果 KEY 和 VALUE 有进一步的限制,则根据需要更改它们的字符类,例如,如果 KEY 必须是仅大写的标识符,则使用[A-Z][A-Z0-9]*而不是。[^=~]+

如果将 Javamatches()与正则表达式一起使用,则第一个^和结尾$是多余的。第二个^仍然是必需的。

于 2020-03-13T11:29:58.280 回答