正则表达式是已知条件后和原来的源进行判断的。 如果一定要用正则就只能是先判断有没有,可是提取不知道什么意思。 是改造原来字符串? 如果不是,你都知道有了,你要的不就是你用来比较的条件么,还提取什么。 关于java正则支持通用的正则标准。 [abc] a, b, or c (simple class) [^abc] Any character except a, b, or c (negation) [a-zA-Z] a through z or A through Z, inclusive (range) [a-d[m-p]] a through d, or m through p: [a-dm-p] (union) [a-z&&[def]] d, e, or f (intersection) [a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction) [a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction) 使用举例 String sr="abcdefg"; String cp="de"; sr.matches("[^de^]");
hehe ,我研究好了给你 :)
<script language="javascript"> var regEx=/\(/; var tmp = "952支(东湖-十八里店北桥):酒仙桥"; var tmp1=regEx.exec(tmp); alert (RegExp.leftContext); </script>
String str = tem.substring(0,tme.index("("));
String reg = "\\d{3}支?";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(s);
if(m.find()) {
System.out.println(m.group());
}我其实也不会,呵呵
\\d+支?
其中 \d代表数字,+表示有一个数字以上
?表示,可有可无(0或1)可以匹配一个或以上数字路线,外加支线 String s = "9支(东湖-十八里店北桥):酒仙桥";
String reg = "\\d+支?";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(s);
if(m.find()) {
System.out.println(m.group());
}else{
System.out.println("NO");
}
如果一定要用正则就只能是先判断有没有,可是提取不知道什么意思。
是改造原来字符串?
如果不是,你都知道有了,你要的不就是你用来比较的条件么,还提取什么。
关于java正则支持通用的正则标准。
[abc] a, b, or c (simple class)
[^abc] Any character except a, b, or c (negation)
[a-zA-Z] a through z or A through Z, inclusive (range)
[a-d[m-p]] a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]] d, e, or f (intersection)
[a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction)
使用举例
String sr="abcdefg";
String cp="de";
sr.matches("[^de^]");
:)
var regEx=/\(/;
var tmp = "952支(东湖-十八里店北桥):酒仙桥";
var tmp1=regEx.exec(tmp);
alert (RegExp.leftContext);
</script>
String regex = ".+\\(" ;
String str = "952支(东湖-十八里店北桥):酒仙桥";
Pattern pattern = Pattern.compile(regex) ;
Matcher m = pattern.matcher(str) ;
while (m.find()){
String strReg = m.group() ;
System.out.println(strReg.replaceAll("\\(","")); }
String str = "952支(东湖-十八里店北桥):酒仙桥";
Matcher m = p.matcher(str);
boolean result = m.find();
System.out.println("匹配成功的字符:" + m.group());成功了。。!!!
String regex = "^(\\d{1,3}+.{1})\\(";
Pattern pattern = Pattern.compile(regex) ;
Matcher m = pattern.matcher(str) ;
if (m.find()) {
System.out.println(m.group(1));
}
而你的条件可以说是不确定的,而是“("以前的字符,模式中正是利用这个特征才能求出它的匹配模式
模式中不能取得你正常要求的字符,用replaceAll的现象也就很多了,相当于用了两次正则表达式.
String str = "95672支(东湖-十八里店北桥):酒仙桥";
Pattern pattern = Pattern.compile(regex) ;
Matcher m = pattern.matcher(str) ;
while (m.find()){
String strReg = m.group(1) ;
System.out.println(strReg) ;
}代表整个正则表达式的捕获组序号为0,左边第一个圆括号对应的捕获组序号为1,第二个圆括号对应的
捕获组序号为2,以此类推,正则表达式有多少个圆括号就有多少个捕获组.