Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我希望Java Pattern.compile能够识别正整数或负整数或小数_Java_Regex_Matcher - Fatal编程技术网

我希望Java Pattern.compile能够识别正整数或负整数或小数

我希望Java Pattern.compile能够识别正整数或负整数或小数,java,regex,matcher,Java,Regex,Matcher,在Java中,我想使用Pattern.compile(stringregexp)来查找负整数或正整数或十进制数 例如:(1)(11)(1.1)(11.11)(-1)(-11)(-1.1)(-11.11) 我在网上找到了几个答案,告诉我这是正确的regexp,但它每次都会忽略“-”号 Pattern pattern1 = Pattern.compile("(\\-?\\d+(\\.\\d+)?)"); 试试这个: Pattern pattern1 = Pattern.compile("(-|\\

在Java中,我想使用Pattern.compile(stringregexp)来查找负整数或正整数或十进制数

例如:(1)(11)(1.1)(11.11)(-1)(-11)(-1.1)(-11.11)

我在网上找到了几个答案,告诉我这是正确的regexp,但它每次都会忽略“-”号

Pattern pattern1 = Pattern.compile("(\\-?\\d+(\\.\\d+)?)");
试试这个:

Pattern pattern1 = Pattern.compile("(-|\\+)?\\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通过执行\u2212 a.k.a.(\-)来允许unicode。这解决了我的问题,我不知道为什么在这样做之前它不起作用。

它在这里起作用:我认为你不必逃避破折号,因为它不在角色类中。。。此外,外部参数也没有做任何事情:
-?\\d+(\\.\\d+)
@Rims不匹配非十进制数字,如1,-1…当您说“忽略”减号时,您的意思是什么?它要么匹配要么不匹配…@Prexx不应该匹配小数。但他想要:)“找到一个负整数或正整数或小数。”也许你可以在你的方法中添加它?添加一个模式来匹配小数。也许他想要(1),(-1)。。。相配。这就解释了必须转义的不必要的外部大括号。@Prexx True,我添加了另一个表达式
Pattern p = Pattern.compile("(-?(\\d+(\\.?\\d+)))");
Matcher m = p.matcher(YourString);
//m.group(1);
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)
Pattern p = Pattern.compile("(-?(\\d+(\\.?\\d+)))");
Matcher m = p.matcher(YourString);
//m.group(1);