Различные результаты между Javascript и Java совпадениями регулярного выражения - PullRequest
0 голосов
/ 04 марта 2020

Теперь я пытаюсь сопоставить некоторые шаблоны из строки, содержащей структурированные массовые запросы эластичного поиска. Вот пример:

index {[event_20191209][event][null], source[{"haha":"haha","jaja":"jaja"}]}, update {[event_20191209][event][xxx], doc_as_upsert[false], doc[index {[null][_doc][null], source[{"haha":"haha","jaja":"jaja"}]}], scripted_upsert[false], detect_noop[true]}, delete {[event_20191208][_doc][sjdos]}, update {[event_20191209][event][yyy], doc_as_upsert[false], upsert[index {[null][_doc][null], source[{"haha":"haha","jaja":"jaja"}]}], scripted_upsert[false], detect_noop[true]}

Моя цель состоит в том, чтобы сопоставить каждый отдельный запрос из строки массовых запросов, то есть получить строки типа:

index {[event_20191209][event][null], source[{"haha":"haha","jaja":"jaja"}]},
update {[event_20191209][event][xxx], doc_as_upsert[false], doc[index {[null][_doc][null], source[{"haha":"haha","jaja":"jaja"}]}], scripted_upsert[false], detect_noop[true]},
delete {[event_20191208][_doc][sjdos]},
update {[event_20191209][event][yyy], doc_as_upsert[false], upsert[index {[null][_doc][null], source[{"haha":"haha","jaja":"jaja"}]}], scripted_upsert[false], detect_noop[true]}

И мое шаблонное выражение [a-z]+\s\{.+?\}[,\w\t\r\n]+?, который отлично работает на онлайн-тестере регулярных выражений на основе Javascript, как показано ниже: enter image description here

Однако, когда я скопировал это выражение шаблона в мой код Java, вывод было не то, что я ожидал. Это было так: enter image description hereenter image description here

Итак, я понял, что существуют некоторые различия между Javascript и Java движком регулярных выражений, но я не могу понять, как обновить мое выражение, чтобы оно могло хорошо работать в Java после такого большого количества кодирования и поиска в Google.

Я был бы так благодарен, если бы кто-то мог дать мне какую-то услугу или подсказку для этого.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

После короткого сна я обнаружил прозрение. Утром я был дураком ... Обходной путь настолько прост в реализации. Elasticsearch хорошо переопределил toString () для нас. enter image description here

0 голосов
/ 04 марта 2020

На первый взгляд, я бы не советовал сразу использовать регулярные выражения. Похоже, что эти строки следуют некоторому шаблону, который вы могли бы сначала проанализировать и разделить.

После этого, если вы говорите о регулярных выражениях, я бы попробовал:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...