使用regEx在String中查找特殊数字

时间:2016-10-03 22:38:47

标签: java regex

我正在进行常规Expr的困难。我必须在字符串String str = "abc.123,a"中找到123。我试过了 if(str1.matches("[\\s,.!]*123[\\s,.!]*")) System.out.println("String " + str1 +" consist number " + searchNumber); 但它不起作用,但如果我有String str = .123,则可行。

1 个答案:

答案 0 :(得分:0)

如果您在正则表达式中使用Matcher#find(),则会得到一个匹配项,因为find()会搜索部分匹配项。但是,由于[\s,.!]*匹配 0 或更多次出现,您的模式不符合您的我必须找到裸号(没有附近的字母)要求。

您可能对基于word boundary的解决方案感兴趣 - "\\b123\\b"。见this demo。字边界匹配字母,数字和下划线之前/之后的位置。

如果您确实需要匹配不在字母之间的123,请使用

String pat = "(?<!\\p{L})123(?!\\p{L})";

请参阅regex demo,其中

然而,会在123中找到01234,所以我相信单词边界正则表达式是适合您的解决方案。

请参阅Java demo

String str = "abc.123,a";
Pattern ptrn = Pattern.compile("(?<!\\p{L})123(?!\\p{L})");
Matcher matcher = ptrn.matcher(str);
if (matcher.find()) {
    System.out.println("YES");
}