首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数的Java正则表达式

数的Java正则表达式
EN

Stack Overflow用户
提问于 2013-08-25 19:22:13
回答 2查看 1.1K关注 0票数 0

我知道这个问题可能很愚蠢,但我正试图从短信中得到一些信息,而你是我在过去三个小时尝试后最后的希望。

代码语言:javascript
复制
DIC: C/40764176 IC: 407641'6 
Dekujerne a t8ime se na shledanou 

例如,我需要得到这个40764176

我需要得到8-10长度的字符串,有时会有一些特殊的字符,如I,i,G,S,O,ó,l),但我已经尝试了很多模式,但没有人工作.

我试过:

代码语言:javascript
复制
String generalDicFormatPattern = "([0-9IiGSOól]{8,10})";
String generalDicFormatPattern = ".*([0-9IiGSOól]{8,10}).*";
String generalDicFormatPattern = "\\b([0-9IiGSOól]{8,10})\\b";

什么都不管用..。你知道问题出在哪里吗?

编辑:

我以这种方式使用regex:

代码语言:javascript
复制
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;
}   
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-25 19:35:14

如果字符串的模式是固定的,则可以使用regex

代码语言:javascript
复制
C/([^\s]{8,10})\sIC:

样本代码:

代码语言:javascript
复制
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
}

我期待任何字符(包括您在示例中显示的特殊字符),但需要一个空白。

票数 1
EN

Stack Overflow用户

发布于 2013-08-25 19:40:38

您可以使用空格(string.split('\\s');)拆分字符串,然后应该有如下数组:

  1. 迪奇:
  2. C/40764176
  3. IC: 407641'6
  4. ..。
  5. 沙莱塔努

获取第二个字符串,使用'/‘将其拆分,并获取第二个元素。

希望它能帮到你。

提示:您可以使用regex (([0-9IiGSOól]{8,10})检查结果后的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18432765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档