首页新闻找找看学习计划

java 正则表达式 很多字符的组合 有多个 怎么写

0
[已解决问题] 解决于 2015-12-07 18:36

比如

"1223801,122380,14瀚华01,111"

我想 写 任意字符 + ,  的组合  有多个

 

怎么写?

 

[\d]+ 表示数字 有多个

不能写 [[\d]+]+  这样吧

 

加括号就成了分组了 

Inszt的主页 Inszt | 初学一级 | 园豆:151
提问于:2015-11-10 12:59
< >
分享
最佳答案
0

你是想要把所有的数字找出来?比如你的字符串是:"1223801,122380,14瀚华01,111"

你要匹配的结果是:

共找到 5 处匹配:
1223801
122380
14
01
111

 

是不是这样呢?是的话你用正则:([\d]+)   就可以了。

奖励园豆:5
明Lam | 小虾三级 |园豆:595 | 2015-11-16 08:59

 

上面的有几组,我想匹配所有的 "1111,2222,3333,44444,55555"

在引号内 多个数字 加 引号的组合 有多个,  就是说  "([\d]+,)+"   这个意思,

当然 我写的这个不对,匹配不出来

 

我知道用别的方式也可以匹配出来,我只是 想知道  这种 写法,就是 多个外面 再有多个

Inszt | 园豆:151 (初学一级) | 2015-11-16 09:57

比如

"1111,2222,3333,44444,55555"------------------"1111,2222,3333,44444,55555"------------------"1111,2222,3333,44444,55555"------------------

Inszt | 园豆:151 (初学一级) | 2015-11-16 09:57

@Inszt: 就像你说的 只有连续的串 "1111,2222,3333,44444,55555,"  都能匹配的 才能用  "([\d]+,)+" 找出来,要是你中间又多了其它字符,这样就匹配不到了,所以这样是不行的。因为正则匹配是匹配连续的串,当然分组也匹配出来的也是一串连续的。

明Lam | 园豆:595 (小虾三级) | 2015-11-16 11:18

@啊~小明: 我主要想问的不是 匹配我的例子中的东西

 

我主要想问   各种单个正则 组合成一个 ,这样一个组合 有多个的形式 可不可以

说白了  括号外面套括号  能套吗 能套多少个

 

ru:   (([\d]+[\w]+)+[a-z])+

Inszt | 园豆:151 (初学一级) | 2015-12-07 18:40
其他回答(2)
0

你的[]可以转义掉

稳稳的河 | 园豆:4183 (老鸟四级) | 2015-11-10 14:25

不是,我的意思是说 

有 1到多个数字加上 逗号  这样的整个作为 一个 组合   有1到多个

多个数字 +,:[\d]+,   整个 的有多个

应该怎么 写这个正则?

支持(0) 反对(0) Inszt | 园豆:151 (初学一级) | 2015-11-10 14:42
0
Pattern p = Pattern.compile("(.*,)+");
System.out.println(p.matcher("1111,").matches());

true

你要这个?

之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-10 18:22

类似,不过你这个匹配不出来

支持(0) 反对(0) Inszt | 园豆:151 (初学一级) | 2015-11-16 09:46

@Inszt: 不太了解你的需求,你上面比如里面的有汉字,结果你要的是\d数字?

支持(0) 反对(1) 之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-16 11:04

@之奇一昂: 

 

比如

"1111,2222,3333,44444,55555"------------------"1111,2222,3333,44444,55555"------------------"1111,2222,3333,44444,55555"------------------

 

上面的有几组,我想匹配所有的 "1111,2222,3333,44444,55555"

在引号内 多个数字 加 引号的组合 有多个,  就是说  "([\d]+,)+"   这个意思,

当然 我写的这个不对,匹配不出来

 

我知道用别的方式也可以匹配出来,我只是 想知道  这种 写法,就是 多个外面 再有多个

支持(0) 反对(0) Inszt | 园豆:151 (初学一级) | 2015-11-16 15:33

@Inszt: 

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d+(,\\d+)*");
        Matcher m = p.matcher("\"1111,2222,3333,44444,55555\"------------------\"1111,2222,3333,44444,55555\"------------------\"1111,2222,3333,44444,55555\"------------------");
        while(m.find()){
            System.out.println(m.group());
        }
        /**
         *  output:
         *  1111,2222,3333,44444,55555
         *    1111,2222,3333,44444,55555
         *    1111,2222,3333,44444,55555
         */
    }

}
Regex

这样的?

支持(0) 反对(0) 之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-16 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册