Java Регулярное выражение для точного совпадения регистра - PullRequest
0 голосов
/ 13 июня 2018

Я изо всех сил пытался найти совпадающую строку (строки) с регулярным выражением Java для синтаксиса {//<some string>/<some String>}

Мое регулярное выражение должно возвращаться со следующими совпадающими случаями: {// data / process_id}

Ниже приведена строка, в которой я хочу найти соответствующий синтаксис:

@process_id={//data/process_id}#@history_id={//data/history_id}#@Pdataxml={//data/dataxml}#@Prules =_UNESCAPEXMLVALUE({//data/rules})#@submitted_by={//data/submitted_by}#@table_definition={//data/table_definition}

Я пробовал с использованием шаблона ниже regx, но он не работал: [a-zA-Z_/\\[\\]\\(\\)0-9|]+

Может кто-нибудь, пожалуйстапомогите мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вы можете использовать следующее регулярное выражение:

\{\/\/[^\/{}\s]*\/[^\/{}\s]*\}

Демонстрация по регулярному выражению 1011

код:

String input = "@process_id={//data/process_id}#@history_id={//data/history_id}#@Pdataxml={//data/dataxml}#@Prules =_UNESCAPEXMLVALUE({//data/rules})#@submitted_by={//data/submitted_by}#@table_definition={//data/table_definition}";
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("\\{\\/\\/[^\\/{}\\s]*\\/[^\\/{}\\s]*\\}").matcher(input);
while (m.find()) {
    allMatches.add(m.group());
}
System.out.println(allMatches);

выход:

[{//data/process_id}, {//data/history_id}, {//data/dataxml}, {//data/rules}, {//data/submitted_by}, {//data/table_definition}]
0 голосов
/ 13 июня 2018

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

"\\{//([^/]+)/([^/}]+)}"

Части захвачены в группах 1 и 2.

Как это:

Matcher m = Pattern.compile("\\{//([^/]+)/([^/}]+)}").matcher(str);
while (m.find()) {
    String part1 = m.group(1);
    String part2 = m.group(2);
    // do something with the parts
}

Чтобы просто захватитьвсе, что можно получить из m.group(), используйте это регулярное выражение:

"(?<=\\{)//[^/]+/[^/}]+(?=})"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...