我想提取一窜数字之后的那个字符
比如String strMoney ="48000万";
String regex ="[0-9_._,]+(.*?)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(strMoney);
if(m.find()){         moneyText = m.group(0);         moneyLevel = m.group(1);     }提取出来的
moneyLevel 是空值 我想moneyLevel 赋值为“万”
不知道我的正则表达式哪里写的有问题,请高手指点!
回帖即给分! java正则正则表达式

解决方案 »

  1.   

    public static void main(String[] args) {
    String strMoney ="48054354545400万212121";
    String regex ="[0-9_._,]+(.*?)+[\u4e00-\u9fa5]+[0-9_._,]+(.*?)";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(strMoney);
    String moneyText="";
    String moneyLevel="";
    if(m.find()){
                    moneyText = m.group(0);
                    
                    moneyLevel = m.group(1);
                }
    System.out.println(moneyLevel+"========="+moneyText);
    }
      

  2.   


    public static void main(String[] args) {
    String strMoney ="48054354545400万";
    String regex ="[0-9_._,]+(.*?)+[\u4e00-\u9fa5]";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(strMoney);
    String moneyText="";
    String moneyLevel="";
    if(m.find()){
                    moneyText = m.group(0);
                    
                    moneyLevel = m.group(1);
                }
    System.out.println(moneyLevel+"========="+moneyText);
    }
      

  3.   

    String strMoney = "48000万";
    String regex = "([0-9_._,]+|[a-zA-Z]+)";
    String[] str = strMoney.split(regex);
    System.out.println(str[1]);
      

  4.   

    public static void main(String[] args) throws Exception { String strMoney = "48000万";
    String regex = "\\D+";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(strMoney);
    if (m.find()) {
    System.out.println(m.group(0));
    }
    }
      

  5.   

    [0-9_._,]+(.*?)表示数字 + 后面为数字的
    [\u4e00-\u9fa5]+(.*?) 表示汉字+后面为汉字的要第一个 不加(.*?) 就可以了
      

  6.   

    public static void main(String[] args) {
    String strMoney ="48054354545400万玩";
    String regex ="[\u4e00-\u9fa5]";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(strMoney);
    String moneyText="";
    String moneyLevel="";
    if(m.find()){
                    moneyText = m.group(0);
                    
    //                 moneyLevel = m.group(1);
                }
    System.out.println(moneyLevel+"========="+moneyText);
    }
      

  7.   

    数字前没汉字的话,直接去第一个汉字不就是数字后的第一个汉字了啊。。
    public static void main(String[] args) throws Exception { String strMoney = "48000万数字";
    Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
     Matcher matcher = p.matcher(strMoney);
     if (matcher.find()) {
       System.out.println(matcher.group());
     }
    }
      

  8.   

    moneyText  就是第一个汉字啊?  或者取出4800万 后使用 subString
      

  9.   

    应该说是我的例子有问题
    我应该写“数字48000万数字”……
    我只想取“万” public static void main(String[] args) throws Exception { String strMoney = "啊数aa字48000万sxx数字";
    Pattern pattern = Pattern.compile("(\\D*)(\\d*)([\u4e00-\u9fa5]).*");
     Matcher matcher = pattern.matcher(strMoney);
     if (matcher.find()) {
       System.out.println(matcher.group(3));
     }
    }
      

  10.   

    应该说是我的例子有问题
    我应该写“数字48000万数字”……
    我只想取“万” public static void main(String[] args) throws Exception { String strMoney = "啊数aa字48000万sxx数字";
    Pattern pattern = Pattern.compile("(\\D*)(\\d*)([\u4e00-\u9fa5]).*");
     Matcher matcher = pattern.matcher(strMoney);
     if (matcher.find()) {
       System.out.println(matcher.group(3));
     }
    }
    非常非常的感谢!