Regex 如何在java正则表达式中获取`{`?

Regex 如何在java正则表达式中获取`{`?,regex,string,java-8,Regex,String,Java 8,鉴于这一案文: RULE deviceType=IPHONE_DEVICE&ClientVersion>=4.10 { bla1 \ } RULE deviceType=ANDROID_DEVICE&ClientVersion>=4.5 { bla2 \ } bla1 bla2 我想使用java正则表达式获取以下文本: RULE deviceType=IPHONE_DEVICE&ClientVersion>=4.10 { bla1 \ } RU

鉴于这一案文:

RULE deviceType=IPHONE_DEVICE&ClientVersion>=4.10 { bla1 \ } 
RULE deviceType=ANDROID_DEVICE&ClientVersion>=4.5 { bla2 \ }
bla1 
bla2
我想使用java正则表达式获取以下文本:

RULE deviceType=IPHONE_DEVICE&ClientVersion>=4.10 { bla1 \ } 
RULE deviceType=ANDROID_DEVICE&ClientVersion>=4.5 { bla2 \ }
bla1 
bla2
我试过:

    Pattern pattern = Pattern.compile("(.*?)RULE deviceType=ANDROID_DEVICE&ClientVersion>=4.5 \\{(\\w+)\\ \\}(.*)");
    Matcher matcher = pattern.matcher(stringMap);
    if (matcher.find()) {
        androidSection = matcher.group(1);
    }
但代码返回的匹配项为零


我缺少什么?

您可以将正则表达式更改为:

RULE deviceType=\w+&ClientVersion>=[\d.]+\h*\{\h*(\w+)\h*\\\h*}

使用Java使用此正则表达式:

final String regex =
       "RULE deviceType=\\w+&ClientVersion>=[\\d.]+\\h*\\{\\h*(\\w+)\\h*\\\\\\h*\\}";

{
后面的空格?失败是因为
{
后面的空格和单词后面的
\