Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

Java 重复模式的模式匹配

Java 重复模式的模式匹配,java,regex,Java,Regex,我试图从格式为{field:value}{field2:value}…{fieldn:valuen}} 我被困在{(.*):(.*)}-在regextster中,它匹配整个字符串(可以理解),但在执行时,它抛出一个异常-“非法重复”转义一些字符: "\\{(.*): (.*)\\}" 字符}和{具有特殊含义,需要转义。首先,应转义{和},因为它们意味着重复的时间 其次,我认为您希望只匹配字符串的一部分。您可以只允许允许使用字符(例如[a-z0-9]),这样条目字符串就不会匹配 \\{([a-z

我试图从格式为
{field:value}{field2:value}…{fieldn:valuen}}

我被困在
{(.*):(.*)}
-在regextster中,它匹配整个字符串(可以理解),但在执行时,它抛出一个异常-“非法重复”

转义一些字符:

"\\{(.*): (.*)\\}"

字符}和{具有特殊含义,需要转义。

首先,应转义
{
}
,因为它们意味着重复的时间

其次,我认为您希望只匹配字符串的一部分。您可以只允许允许使用字符(例如[a-z0-9]),这样条目字符串就不会匹配

\\{([a-z0-9]*): ([a-z0-9]*)\\}

正如注释中指出的,除了一些特殊的
[^{}:][/code>,您可以允许所有字符。如果我没记错,您不需要在字符类中转义
{}

谢谢。您的意思是:“您可以只允许允许使用字符(例如a-z),这样条目字符串就不会匹配了。”为什么。*不起作用?您的regexp将匹配任何包含
{
,然后是anything,然后是“:”,然后是anything,than}的字符串,对于您的示例,它将只匹配所有字符串。我的将分别匹配每个字段,或者只是确保不需要的字符串不匹配,并且对于特殊的regexp字符(如“\\{([^\\{\}:]),仍然正确转义:([^\\{\}:*)\\}”。此部分[^\{\}:]仅匹配不是{,}或:。