读书人

希望正则表达式的高手帮上忙

发布时间: 2012-12-20 09:53:21 作者: rapoo

希望正则表达式的高手帮下忙
问题如下:

public void test(){
String str = "I82+I88";
String regex = null;
String replacement = null;
str.replaceAll(regex, replacement);

//希望匹配后的结果,类似下面
str = "[T192.I82]+[T192.I88]";
}

希望熟悉正则表达式替换的大牛,帮忙解决,不胜感激!
[最优解释]
F"; //表示a或F
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
boolean rs = mat.find(); 如果s中有regEx,那么rs为true,否则为flase。

如果想在查找时忽略大小写,则可以写成Pattern pat=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);



2.在某个文件中获取一段字符串

Java代码
1.String regEx = ".+\(.+)$";
2.String s = "c:\test.txt";
3.Pattern pat = Pattern.compile(regEx);
4.Matcher mat = pat.matcher(s);
5.boolean rs = mat.find();
6.for(int i=1;i<=mat.groupCount();i++){
7.  System.out.println(mat.group(i));
8.}
String regEx = ".+\(.+)$";
String s = "c:\test.txt";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
boolean rs = mat.find();
for(int i=1;i<=mat.groupCount();i++){
  System.out.println(mat.group(i));
}  以上的执行结果为test.txt,提取的字符串储存在mat.group(i)中,其中i最大值为mat.groupCount();



3.对字符串的分割

Java代码
1.String regEx=":";
2.Pattern pat = Pattern.compile(regEx);
3.String[] rs = pat.split("aa:bb:cc");
String regEx=":";
Pattern pat = Pattern.compile(regEx);
String[] rs = pat.split("aa:bb:cc");  执行后,r就是{"aa","bb","cc"}

如果用正则表达式分割就如上所示,一般我们都会使用下面更简单的方法:

Java代码
1.String s = "aa:bb:cc";
2.String[] rs=s.split(":");
String s = "aa:bb:cc";
String[] rs=s.split(":");

4.字符串的替换/删除

Java代码
1.String regEx="@+"; //表示一个或多个@
2.Pattern pat=Pattern.compile(regEx);
3.Matcher mat=pat.matcher("@@aa@b cc@@");
4.String s=mat.replaceAll("#");
String regEx="@+"; //表示一个或多个@
Pattern pat=Pattern.compile(regEx);
Matcher mat=pat.matcher("@@aa@b cc@@");
String s=mat.replaceAll("#");  结果为"##aa#b cc##"
  
 如果要把字符串中的@都给删除,只用要空字符串替换就可以了:

Java代码
1.String s=mat.replaceAll("");
String s=mat.replaceAll("");  结果为"aab cc"

[其他解释]
1.Java中在某个字符串中查询某个字符或者某个子字串

Java代码
1.String s = "@Shang Hai Hong Qiao Fei Ji Chang";   
2.String regEx = "a
[其他解释]

String str = "I82+I88";
String regex = "([A-Z]{1,2}[1-9]{1,3})";
String replacement = "[T192\\.$1]";
System.out.println(str.replaceAll(regex, replacement));


// 希望匹配后的结果,类似下面
str = "[T192.I82]+[T192.I88]";


这样?
[其他解释]
数字前面的字母为一到两个大写字母,[A-Z]{1,2}
数字为一到三个,[1-9]{1,3}
求高手帮忙!
[其他解释]
F"; //表示a或F
3.Pattern pat = Pattern.compile(regEx);
4.Matcher mat = pat.matcher(s);
5.boolean rs = mat.find();
String s = "@Shang Hai Hong Qiao Fei Ji Chang";   
String regEx = "a
[其他解释]
String regEx="^[A-Z]{1,2}$"; //这是第一个,第二个类似 ,我也是看那篇文章后照着学的。
Pattern pat=Pattern.compile(regEx);
Matcher mat=pat.matcher("I82+I88");
String s=mat.replaceAll("[T192"+mat+"]");





[其他解释]
引用:
1.Java中在某个字符串中查询某个字符或者某个子字串

Java代码
1.String s = "@Shang Hai Hong Qiao Fei Ji Chang";   
2.String regEx = "a
[其他解释]
F"; //表示a或F
3.Pattern pat = Pattern.compile(regEx);
4.Matche……


我这么写:如何改一下
//满足str的匹配条件,regex和replacement如何写才正确
String str = "I82+I88";
String regex = "^[A-Z]{1-2}[0-9]{1-3}$";
String replacement = "[\0\1]";

Pattern pat = Pattern.compile(regex);
Matcher mat = pat.matcher(str);
boolean rs = mat.find();
if (rs) {
mat.replaceAll(replacement);
System.out.println(str);
}

读书人网 >J2SE开发

热点推荐