Android - Java 正则表达式 - 索引附近的正则表达式模式中的语法错误
Android - Java Regex - Syntax error in regexp pattern near index
我的正则表达式有问题。当在字符串中设置表达式时会出错。看这个!我想要 returns 数组中具有我搜索值的对象,例如 "Daventry."
我正在使用:{[^{}\]]*Daventry[^{}\]]*}
[
{
"id": 113548,
"name": "Daventry",
"state_id": 1446,
"state_name": "Northamptonshire",
"state_code": "J1",
"country_id": 232,
"country_name": "United Kingdom",
"country_code": "GB",
"country_flag": "GB.png",
"currency_code": "GBP",
"currency_symbol": "£"
},
{
"id": 192392,
"name": "Daverdisse",
"state_id": 484,
"state_name": "Luxembourg",
"state_code": "06",
"country_id": 22,
"country_name": "Belgium\n",
"country_code": "BE",
"country_flag": "BE.png",
"currency_code": "EUR",
"currency_symbol": "€"
},
{
"id": 115981,
"name": "Davey",
"state_id": 4138,
"state_name": "Nebraska",
"state_code": "NE",
"country_id": 233,
"country_name": "United States\n",
"country_code": "US",
"country_flag": "US.png",
"currency_code": "USD",
"currency_symbol": "$"
},
{
"id": 142184,
"name": "David",
"state_id": 3350,
"state_name": "Neamt",
"state_code": "28",
"country_id": 181,
"country_name": "Romania\n",
"country_code": "RO",
"country_flag": "RO.png",
"currency_code": "RON",
"currency_symbol": "lei"
},
{
"id": 108261,
"name": "David",
"state_id": 4127,
"state_name": "Kentucky",
"state_code": "KY",
"country_id": 233,
"country_name": "United States\n",
"country_code": "US",
"country_flag": "US.png",
"currency_code": "USD",
"currency_symbol": "$"
}
]
而且只有 returns:
[
{
"id": 113548,
"name": "Daventry",
"state_id": 1446,
"state_name": "Northamptonshire",
"state_code": "J1",
"country_id": 232,
"country_name": "United Kingdom",
"country_code": "GB",
"country_flag": "GB.png",
"currency_code": "GBP",
"currency_symbol": "£"
}
]
但是报错如下:
java.util.regex.PatternSyntaxException: Syntax error in regexp pattern
near index 1: 10-27 09:53:48.297 15052-15052/com.plugapps.freecommerce
E/AndroidRuntime: {[/^{}]]Daventry[/^{}]]}
我该怎么办?
在正则表达式中,'{','['等是特殊字符,需要转义,所以要用\{
来表示{
,所以你的refex表达式是错误所以抛出这样的异常。
其实我不建议你使用正则表达式来搜索你的情况,你最好解析一个jsonarray并检查每个jsonobject的名称。
我的正则表达式有问题。当在字符串中设置表达式时会出错。看这个!我想要 returns 数组中具有我搜索值的对象,例如 "Daventry."
我正在使用:{[^{}\]]*Daventry[^{}\]]*}
[
{
"id": 113548,
"name": "Daventry",
"state_id": 1446,
"state_name": "Northamptonshire",
"state_code": "J1",
"country_id": 232,
"country_name": "United Kingdom",
"country_code": "GB",
"country_flag": "GB.png",
"currency_code": "GBP",
"currency_symbol": "£"
},
{
"id": 192392,
"name": "Daverdisse",
"state_id": 484,
"state_name": "Luxembourg",
"state_code": "06",
"country_id": 22,
"country_name": "Belgium\n",
"country_code": "BE",
"country_flag": "BE.png",
"currency_code": "EUR",
"currency_symbol": "€"
},
{
"id": 115981,
"name": "Davey",
"state_id": 4138,
"state_name": "Nebraska",
"state_code": "NE",
"country_id": 233,
"country_name": "United States\n",
"country_code": "US",
"country_flag": "US.png",
"currency_code": "USD",
"currency_symbol": "$"
},
{
"id": 142184,
"name": "David",
"state_id": 3350,
"state_name": "Neamt",
"state_code": "28",
"country_id": 181,
"country_name": "Romania\n",
"country_code": "RO",
"country_flag": "RO.png",
"currency_code": "RON",
"currency_symbol": "lei"
},
{
"id": 108261,
"name": "David",
"state_id": 4127,
"state_name": "Kentucky",
"state_code": "KY",
"country_id": 233,
"country_name": "United States\n",
"country_code": "US",
"country_flag": "US.png",
"currency_code": "USD",
"currency_symbol": "$"
}
]
而且只有 returns:
[
{
"id": 113548,
"name": "Daventry",
"state_id": 1446,
"state_name": "Northamptonshire",
"state_code": "J1",
"country_id": 232,
"country_name": "United Kingdom",
"country_code": "GB",
"country_flag": "GB.png",
"currency_code": "GBP",
"currency_symbol": "£"
}
]
但是报错如下:
java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 1: 10-27 09:53:48.297 15052-15052/com.plugapps.freecommerce E/AndroidRuntime: {[/^{}]]Daventry[/^{}]]}
我该怎么办?
在正则表达式中,'{','['等是特殊字符,需要转义,所以要用\{
来表示{
,所以你的refex表达式是错误所以抛出这样的异常。
其实我不建议你使用正则表达式来搜索你的情况,你最好解析一个jsonarray并检查每个jsonobject的名称。