Java регулярное выражение с заменой и условием - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть вопрос. Я хотел бы, используя Java regex, заменить последовательность «ИЛИ», если она не является последовательностью «Порядок». Таким образом, если последовательность начинается с «Or» и не заканчивается на «der», я хотел бы сделать замену:

например:.

  • findByNameOrAge ожидается -> findByName Or Age
  • findByNameOrderAge ожидается -> findByNameOrderAge (Сохранить то же значение)

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

    String value = "findByNameOrAge";
    String value2 = "findByNameOrderByAge";
    String regex = "Or(?=^der)";
    System.out.println(value.replaceAll(regex, " or "));
    System.out.println(value2.replaceAll(regex, " or "));

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

Попробуйте это: Or(?!der), он проверит, следует ли Or за der или нет. он заменит Or, если за ним не следует der, пропустите в противном случае.

String value = "findByNameOrAge";
String value2 = "findByNameOrderByAge";
String regex = "Or(?!der)";
System.out.println(value.replaceAll(regex, " or "));
System.out.println(value2.replaceAll(regex, " or "));

проверить демо здесь

Объяснение

Or(?!der)

Or соответствует символам или буквально (с учетом регистра)

Отрицательный взгляд вперед (?!der)

Утверждают, что приведенное ниже регулярное выражение не соответствует

der соответствует символам der буквально (с учетом регистра)

0 голосов
/ 02 сентября 2018

String regex = "[Oo]r(?!der)"; используйте это как регулярное выражение. Он также будет включать слово «или» с заглавными и строчными буквами «о».

0 голосов
/ 02 сентября 2018

Ваше регулярное выражение (?=^der) соответствует Or и использует положительный прогноз, чтобы утверждать, что ниже следует начало строки ^, за которым следует der

Вместо этого вы можете использовать отрицательный прогноз (?!, чтобы утверждать, что то, что следует Or, не является der, а затем заменить на or

Or(?!der)

Regex Demo

String regex = "Or(?!der)";

Java Demo

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