一道關于求導的題目。想用正則運算式判斷是否合法我的想法如下

上面顯示的成功的,但是使用m.matches(); 得出結果是false;所以我想知道假如多次匹配都成功回傳true怎么實作。

假如我輸入 x^123合法 而0x^123不合法,也就是說x的前面不是純粹的數字,我該如何完善qwq。求助
uj5u.com熱心網友回復:
救救孩子qwquj5u.com熱心網友回復:
不知道你想要什么結果,整體匹配還是各項匹配參考一下吧
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Sample {
public static void main(String[] args) {
String regx = "([+-]?\\d+[*]|[+-])?(x)(\\^[+-]?\\d+)?"; //各項匹配(也就是每項符合這個正則)
String allregx = "(" + regx + ")+"; //整體匹配(每項符合的前提下組合在一起)
Pattern p = Pattern.compile(regx);
String []data = {
"x^-5+3*x^7-1200*x^-1000+54468799958488*x^-925546-3*x+x^1",
"0x^123",
"x^123",
"-3*x",
"+x^3"
};
for (String s : data) {
System.out.printf("整體匹配%s: %s\n", s, s.matches(allregx));
Matcher m = p.matcher(s);
while (m.find()) {
System.out.printf("各項匹配: %s\n", m.group(0));
}
}
}
}
uj5u.com熱心網友回復:
題目是算導數,首先輸入一個數學運算式,看他合不合法,在求導。比如2*x^3+4*x^2 +..+...等等,驗證合法性,比如 0x^2 這種就不合法。所以要多次匹配,但我匹配之后不會使用
如果有一次沒有匹配到,我希望能回傳false之類的。
uj5u.com熱心網友回復:
那你就用上面的allregx先匹配整體,再用regx抽出各個專案就可以了,例子都給你寫出來,你執行一下就知道了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91778.html
標籤:Java相關
