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字符(如“\\{([^\\{\}:]),仍然正确转义:([^\\{\}:*)\\}”。此部分[^\{\}:]仅匹配不是{,}或:。