-1

I have a problem in the regular expression. It is giving an error when the expression set in the string. Look at this! I want returns an object in the Array that has the value of my search, for example "Daventry."

I am using: {[^{}\]]*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": "$"
    }
]

And only 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": "£"
        }
]

However gives the following error:

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[/^{}]]}

What do I do?

viana
  • 495
  • 4
  • 18
  • 42

1 Answers1

0

In regex expression,'{','[' and so on are special character and need to be escaped,so you should use \{ to express {,so your refex expression is wrong so such a exception throws.
Actually I don't suggest you use regex experssion to search in your situation,you'd better parse a jsonarray and check every jsonobject's name.

starkshang
  • 8,228
  • 6
  • 41
  • 52
  • I will take a test again. I want to use because I have a file of 100,000 objects, however the search in Android is very slow. – viana Oct 28 '15 at 13:43