Регулярное выражение для разбора id

1

Я ищу регулярное выражение для анализа идентификатора записи в MongoDB:

{"$oid":"5527b117d3d511091e1735e2"}

Я пытаюсь сделать следующее, но это не удается:

 private static final Pattern p = Pattern.compile("\\{\"([a-zA-Z\\d]+)\"\\}");

 Matcher m = p.matcher("{\"$oid\":\"5527b117d3d511091e1735e2\"}");
 if(!m.find()) {
            throw new IllegalArgumentException("The id should be within parenthesis and quotes.");
 }

Любая помощь?

  • 0
    Каков ваш ожидаемый результат?
  • 0
    Используйте анализатор JSON.
Показать ещё 1 комментарий
Теги:

3 ответа

2
Лучший ответ

Вам нужно включить ключевую часть также в регулярное выражение или просто "\\{\"([a-zA-Z\\d$]+)\":" потому что [a-zA-Z\\d]+ выиграл 't совпадение между ними : и рядом с ключевой частью нет закрывающей фигурной скобки.

final Pattern p = Pattern.compile("\\{\"([a-zA-Z\\d$]+)\":\"([^\"]*)\"\\}");
Matcher m = p.matcher("{\"$oid\":\"5527b117d3d511091e1735e2\"}");
if(m.find())
{
    System.out.println("Key : " + m.group(1));
    System.out.println("Value : " + m.group(2));
}

Вывод:

Key : $oid
Value : 5527b117d3d511091e1735e2
  • 0
    Спасибо, что сработало.
1

Это сработало для меня

    String id = str.replaceAll(".*\"(\\w+)\"}", "$1");
  • 0
    Спасибо что тоже сработало
0

Использовать парсер JSON:

String j = "{\"$oid\":\"5527b117d3d511091e1735e2\"}";

JSONParser p = new JSONParser();
JSONObject o = (JSONObject) p.parse(j);
System.out.println(o.get("$oid"));

Вывод:

5527b117d3d511091e1735e2

Используемая библиотека JSON:

    <dependency>
        <groupId>org.simpleframework</groupId>
        <artifactId>simple-xml</artifactId>
        <version>2.7.1</version>
    </dependency>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню