Java 数字的正则表达式模式

标签 java regex match

我知道这个问题可能很愚蠢,但我正在尝试从文本中获取一些信息,经过最后三个小时的尝试,你是我最后的希望。

DIC: C/40764176 IC: 407641'6 
Dekujerne a t8ime se na shledanou 

我需要获取例如这个40764176

我需要获取长度为 8-10 的字符串,有时可能会有一些特殊字符,例如 I、i、G、S、O、ó、l),但我为此尝试了很多模式,但没有人工作...

我尝试过:

String generalDicFormatPattern = "([0-9IiGSOól]{8,10})";
String generalDicFormatPattern = ".*([0-9IiGSOól]{8,10}).*";
String generalDicFormatPattern = "\\b([0-9IiGSOól]{8,10})\\b";

没有任何作用...你知道问题出在哪里吗?

编辑:

我以这种方式使用正则表达式:

private List<String> getGeneralDicFromLine(String concreteLine) {
    List<String> allMatches = new ArrayList<String>();

        Pattern pattern = Pattern.compile(generalDicFormatPattern);
        Matcher matcher = pattern.matcher(concreteLine);

        while (matcher.find()) {             
             allMatches.add(matcher.group(1));
        }                           


    return allMatches;
}   

最佳答案

如果字符串的模式是固定的,您可以使用正则表达式

C/([^\s]{8,10})\sIC:

示例代码:

String s = "DIC: C/40764176 IC: 407641'6";

Pattern p = Pattern.compile("C/([^\\s]{8,10})\\sIC:");
Matcher m = p.matcher(s);

if (m.find()) {
    System.out.println(m.group(1)); // 40764176
}

我期待任何字符(包括您在示例中显示的特殊字符),但空格除外。

关于Java 数字的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18432765/

相关文章:

java - ServerSocket Java 的套接字验证

regex - 正则表达式 : does Kleene star have a distributive property?

javascript - 数字和单位的正则表达式

php - 获取匹配对

c# - 在 C# 中比较列表并返回匹配项

java命令行flyway迁移

java - 我怎么能在 map 上说 "these two generic types are the same"?

java - 如何在 android 上以编程方式设置通话音量?

regex - 正则表达式在所有大写字母上分割时仅找到1个匹配项

regex - Perl 正则表达式替换计数