我希望java pattern.com识别积极或负整数或小数



在java中,我想使用pattern.compile(字符串regexp(查找负数或正整数或十进制。

ex。(1((11((1.1((11.11((-1((-11((-1.1((-11.11(

我在网上找到了几个答案,告诉我这是正确的言论,但它忽略了" - "符号一次。

Pattern pattern1 = Pattern.compile("(\-?\d+(\.\d+)?)");

尝试以下:

Pattern pattern1 = Pattern.compile("(-|\+)?\d+");

应该匹配正整数和负整数。

用于小数(应该匹配整数或小数(:

Pattern pattern2 = Pattern.compile("(-|\+)?\d+((\.{1}\d+)?)");
 String regex = "(-)?\d+([.]\d+)?";

我们允许一个可选的负( - (?对于负数和一个可选的小数点([。](,然后是小数数字的数字( d(。

 String regex = "(-)?\d+([.]\d+)?";
 Pattern pattern = Pattern.compile(regex);
 String input = "-0.123";
 Matcher matcher = pattern.matcher(scr);
 System.out.println(matcher.matches()); //Prints true.

我刚刚测试了您的模式,并且效果很好。也许我不明白这个问题,但这是我使用的源代码。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Play {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Pattern p = Pattern.compile("(\-?\d+(\.\d+)?)");
        Matcher m = p.matcher("(1) (11) (1.1) (11.11) (-1) (-11) (-1.1) (-11.11)");
        while (m.find()) {
            System.out.println("Found a " + m.group());
        }
    }
}

,结果是

run:
Found a 1
Found a 11
Found a 1.1
Found a 11.11
Found a -1
Found a -11
Found a -1.1
Found a -11.11
BUILD SUCCESSFUL (total time: 0 seconds)

如果您也想包括括号,请使用此模式 [(][+-]?([0-9]*[.])?[0-9]+[)]

解决方案:由于某种原因," - "无法识别,因此我尝试了Unicode版本,而Regexp允许Unicode允许Unicode通过执行 u2212 A.K.A.( - (。这解决了我的问题,我不知道为什么它在这样做之前不起作用。

Pattern p = Pattern.compile("(-?(\d+(\.?\d+)))");
Matcher m = p.matcher(YourString);
//m.group(1);

最新更新