如何否定包含范围的正则表达式?

时间:2017-04-08 13:21:40

标签: java regex-negation

我有以下正则表达式,用于标识字符串中的索引变量名称(符号数学等式):

[a-z][0-9]

我想删除索引变量名称的字符串的所有部分。我已经看到了这样做的负向前瞻表达,但是我见过的例子使用了锚点。如果这些示例包含变量名称,则会拒绝整个字符串,而不是替换不是变量名称的字符串部分。有没有一种有效的方法来实现这一目标?我正在使用Java的replaceAll()方法来尝试实现它:

String s = "5x0 +3x2 = 7"; // I should get "x0 x2" after the regex 
s.replaceAll("[a-z][0-9]", ""); // this should be negated

1 个答案:

答案 0 :(得分:1)

我很确定你想要做什么,但可以做什么,更容易理解和代码是:

Matcher m = Pattern.compile("[a-z][0-9]").matcher(s);
while (m.find()) {
    String variable = m.group(); // do with it what you will
}