2017-04-08 66 views
1

我有以下的正則表達式,用於標識一個字符串(一個象徵性的數學方程式)內索引的變量名:如何否定包含範圍的正則表達式?

[a-z][0-9]

我想刪除所有部分是字符串的不是索引變量名稱。我已經看到了這樣做的消極lookahead表達式,但我見過的例子使用錨點。這些示例會拒絕整個字符串(如果它們包含變量名稱),而不是替換不是變量名稱的字符串部分。有沒有一種有效的方法來完成這一點?我使用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

如果您希望匹配的組空間分隔,最好使用Matcher類並從捕獲組中組裝一個新字符串。 – phatfingers

+0

請清楚描述你的問題輸出。你的輸出是什麼?x0 + x2 = 7'? –

回答

1

我敢肯定你想不能做什麼,但可以做什麼,什麼是更容易理解和代碼是:

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

這是更好的方法來提取這些變量名稱。謝謝! – ZakDaniels99