Java正则表达式替换和条件

标签 java regex replace

我有一个问题。 我想做的是,使用 Java 正则表达式,如果它不是“Order”序列,则替换“Or”序列。因此,如果序列以“Or”开头并且不以“der”结尾,我想进行替换:

例如:

  • 预期的 findByNameOrAge -> findByName 或 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 "));

最佳答案

您的正则表达式 (?=^der) 匹配 Or 并使用正向先行断言后面是字符串 ^ 的开头接着是 der

相反,您可以使用否定先行 (?! 来断言 Or 之后的内容不是 der,然后替换为

或者(?!der)

Regex Demo

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

Java Demo

关于Java正则表达式替换和条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52136895/

相关文章:

java - Eclipse中创建类时 'Enclosing type"是什么?

java - 字符串格式和 NullPointerException

visual-studio - 在 Visual Studio 中搜索时仅包含某些文件类型

javascript - 使用计时器将父子图片移动 1px

java - Apache Velocity 禁用模板和资源缓存

java - 类型安全优先规则

java - 将字符串拆分为不包含空元素的数组

python - 正则表达式:匹配重复序列

Python:如何使用正则表达式将句子拆分为新行,然后使用空格将标点符号与单词分开?

javascript - div中的字符串替换