我有以下正则表达式,用于标识字符串中的索引变量名称(符号数学等式):
[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
答案 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
}