读书人

正则表达式怎么匹配

发布时间: 2013-09-05 16:02:07 作者: rapoo

正则表达式如何匹配
我想提取一窜数字之后的那个字符
比如


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 正则 正则表达式
[解决办法]
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);
}
[解决办法]

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);
}


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

[解决办法]
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));
}
}

[解决办法]
需求说完!!
[解决办法]
[0-9_._,]+(.*?)表示数字 + 后面为数字的
[\u4e00-\u9fa5]+(.*?) 表示汉字+后面为汉字的

要第一个 不加(.*?) 就可以了



[解决办法]
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);
}
[解决办法]
直接说取第一个汉字不就行了,,还取数字干什么
[解决办法]
数字前没汉字的话,直接去第一个汉字不就是数字后的第一个汉字了啊。。
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());
}
}


[解决办法]
moneyText 就是第一个汉字啊? 或者取出4800万 后使用 subString


[解决办法]
引用:
Quote: 引用:

数字前没汉字的话,直接去第一个汉字不就是数字后的第一个汉字了啊。。
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());
}
}

应该说是我的例子有问题
我应该写“数字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));
}
}

读书人网 >J2EE开发

热点推荐