Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于验证包含'=';和'~';作为结束字符_Java_Regex_Spring Boot - Fatal编程技术网

Java 用于验证包含'=';和'~';作为结束字符

Java 用于验证包含'=';和'~';作为结束字符,java,regex,spring-boot,Java,Regex,Spring Boot,在Java中,我必须使用正则表达式验证一个字符串,该字符串的末尾包含“~”和“=” 例如: 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=V

在Java中,我必须使用正则表达式验证一个字符串,该字符串的末尾包含“~”和“=”

例如:

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大写

“~”用作分隔符

目前,我正在使用一些常规表达式,但它们都是假的
有人能帮我吗?感谢您提供高级

以下正则表达式应该可以:

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

^匹配输入的开头,即匹配必须从开头开始
(?!~)输入不能以开头`~`
(?:重复一次或多次:
(?:^ | ~)匹配输入的开头或匹配“~”,即在
第一次重复,并在随后的每次重复中匹配`~`
[^=~]+匹配键
=匹配'='
[^=~]*匹配值(可以为空)
)+
$Match输入结束,即匹配必须覆盖所有输入
如果键和值有进一步的限制,请根据需要更改它们的字符类,例如,如果键必须是仅大写的标识符,请使用
[A-Z][A-Z0-9]*
而不是
[^=~]+


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

这个
~
是否真的属于值本身,或者它只是某种分隔符?@QBrute它属于值我的意思是“~”属于字符串,因为分隔符是字段KEY=value~KEY2=value~KEYN=value如果它是分隔符,为什么需要正则表达式?您可以执行类似于
myString.split(“~”)的操作,然后将所有键值对作为一个数组,然后可以分别进行验证。“目前,我正在使用一些常规表达式”向我们展示您所拥有的内容。正则表达式中美元符号前的字符:它不应该是加号而不是星号吗?我不认为匹配一个空字符串是可以的。@Chaarmann可能可以,但你可能是对的。答案已更新。