JAVA 是如何使用正则表达式??? php中使用正则表达式如下:ereg("[[:alnum:]]([GP][0-9]{2})[[:alnum:]]{4}", "9" , $reg);java中如何使用啊,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String.findString.indexOfPattern这些类都可以应用。关键我不会PHP java.util.regex包 Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); 不懂 PHP 的语法,能说明一下后面两个参数的意义吗?[[:alnum:]] 这个是 POSIX 字符组,在 Java 中可用 \p{Alnum} 或者 [0-9a-zA-Z] 来代替其他的全部是一样的。 bool ereg ( string pattern, string string [, array regs])注: 使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。 以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串。 如果找到与 pattern 中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs,则匹配项将被存入 regs 数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。 如果有多个匹配的话,regs 得变成二维数组喽?下面只做了个简单的,如果第二次找到匹配的话,会把第一次的给冲掉,估计也是不正确的,哎,主要我不会 PHP。import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String args[]) { String p = "\\p{Alnum}([GP][0-9]{2})\\p{Alnum}{4}"; String string = "aG14aaa1212"; String[] reg = ereg(p, string); for(String s : reg) { System.out.println(s); } } private static String[] ereg(String pattern, String string) { Pattern p = Pattern.compile(pattern); Matcher matcher = p.matcher(string); String[] reg = new String[matcher.groupCount()]; while(matcher.find()) { for(int i = 0; i < reg.length; i++) { reg[i] = matcher.group(i + 1); } } return reg; }} 漏看了“$regs[0] 包含整个匹配的字符串。”了,再改一下。 private static String[] ereg(String pattern, String string) { Pattern p = Pattern.compile(pattern); Matcher matcher = p.matcher(string); String[] reg = new String[matcher.groupCount() + 1]; while(matcher.find()) { for(int i = 0; i < reg.length; i++) { reg[i] = matcher.group(i); } } return reg; } 比如说字符串:aG14aaa1212bG14aaa1212第一次匹配的是 aG14aaa1,那么 reg[0] = "aG14aaa1" reg[1] = "G14"但是接下来又匹配到了 bG14aaa1,不知道 bG14aaa1 和 G14 这时应该放在哪里,还是说把前面的冲掉? Pattern pattern = Pattern .compile("[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}"); Matcher matcher = pattern.matcher("9"); boolean isMathch = matcher.matches(); String[] $reg = new String[matcher.groupCount()]; for (int i = 0; i < matcher.groupCount(); i++) { $reg[i] = matcher.group(i); } 参考资料:POSIX风格正则表达式 http://blog.chinaunix.net/u/27731/showart.php?id=252747PERL 风格正则表达式 http://blog.csdn.net/dreamnear/archive/2007/11/08/1872965.aspx 在PHP 里面用的是POSIX风格 而java里面用的是PERL风格 楼主 你只要找到他们的对应关系就可以了 楼上的代码,我运行了一下,有这样的错误!!!!!!Exception in thread "main" java.lang.IllegalStateException: No match found at java.util.regex.Matcher.group(Matcher.java:461) at Test3.main(Test3.java:15)import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test3 { public static void main(String[] args) { Pattern pattern = Pattern .compile("[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}"); Matcher matcher = pattern.matcher("9"); boolean isMathch = matcher.matches(); String[] $reg = new String[matcher.groupCount()]; for (int i = 0; i < matcher.groupCount(); i++) { $reg[i] = matcher.group(i); } for(int i= 0 ;i<$reg.length;i++) { System.out.println($reg[i].toString()); } }}怎么样解决谢谢!!!!!!! bao走入思路誤區lz也是大家都是為什么要把php的el改成java能用的?你直接把要求說下,從新寫個不久接了 我的任务就是把php改成java,哈哈 public static void main(String[] args) throws Exception { String pattern = "[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}"; String str = "9P23AZ12"; String[] $reg = ereg(pattern, str); for (int i = 0; i < $reg.length; i++) System.out.println($reg[i]); } public static String[] ereg(String pattern, String str) { ArrayList $reg = new ArrayList(); Pattern patt = Pattern.compile(pattern, Pattern.MULTILINE); Matcher matcher = patt.matcher(str); if (matcher.find()) { for (int i = 0; i <= matcher.groupCount(); i++) { $reg.add(matcher.group(i)); } } return (String[]) $reg.toArray(new String[$reg.size()]); }上面是 我 随便写的一个! 不过不知道是不是和POSIX风格表达式对应 你自己最好研究下 怎么替换字符串 求助啊!在线等!!! eclipse不能用的问题 谁有mod_jk2.so 并有重谢!! 请问JAVE程序语言的平台无关性 常量成员的初始化 还是关于HELLOWORLD的小问题 请教关于程序打包的问题!! 今天买到《Java就业培训教程》了,谈下感受!!! java中有类似于spread表格功能的控件吗,就象excel一样。 求救 递归算法结果是什么 请问这段代码怎么错了?
String.indexOf
Pattern
这些类都可以应用。关键我不会PHP
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
bool ereg ( string pattern, string string [, array regs])
注: 使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。 以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串。 如果找到与 pattern 中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs,则匹配项将被存入 regs 数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。
估计也是不正确的,哎,主要我不会 PHP。import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test { public static void main(String args[]) {
String p = "\\p{Alnum}([GP][0-9]{2})\\p{Alnum}{4}";
String string = "aG14aaa1212";
String[] reg = ereg(p, string);
for(String s : reg) {
System.out.println(s);
}
}
private static String[] ereg(String pattern, String string) {
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(string);
String[] reg = new String[matcher.groupCount()];
while(matcher.find()) {
for(int i = 0; i < reg.length; i++) {
reg[i] = matcher.group(i + 1);
}
}
return reg;
}
}
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(string);
String[] reg = new String[matcher.groupCount() + 1];
while(matcher.find()) {
for(int i = 0; i < reg.length; i++) {
reg[i] = matcher.group(i);
}
}
return reg;
}
.compile("[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}");
Matcher matcher = pattern.matcher("9");
boolean isMathch = matcher.matches(); String[] $reg = new String[matcher.groupCount()]; for (int i = 0; i < matcher.groupCount(); i++) {
$reg[i] = matcher.group(i);
}
PERL 风格正则表达式 http://blog.csdn.net/dreamnear/archive/2007/11/08/1872965.aspx
at java.util.regex.Matcher.group(Matcher.java:461)
at Test3.main(Test3.java:15)import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test3 { public static void main(String[] args) {
Pattern pattern = Pattern
.compile("[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}");
Matcher matcher = pattern.matcher("9");
boolean isMathch = matcher.matches(); String[] $reg = new String[matcher.groupCount()]; for (int i = 0; i < matcher.groupCount(); i++) {
$reg[i] = matcher.group(i);
}
for(int i= 0 ;i<$reg.length;i++) {
System.out.println($reg[i].toString());
} }}怎么样解决谢谢!!!!!!!
lz也是
大家都是
為什么要把php的el改成java能用的?
你直接把要求說下,從新寫個不久接了
String[] $reg = ereg(pattern, str);
for (int i = 0; i < $reg.length; i++)
System.out.println($reg[i]); } public static String[] ereg(String pattern, String str) {
ArrayList $reg = new ArrayList();
Pattern patt = Pattern.compile(pattern, Pattern.MULTILINE);
Matcher matcher = patt.matcher(str);
if (matcher.find()) {
for (int i = 0; i <= matcher.groupCount(); i++) {
$reg.add(matcher.group(i));
}
} return (String[]) $reg.toArray(new String[$reg.size()]);
}上面是 我 随便写的一个! 不过不知道是不是和POSIX风格表达式对应 你自己最好研究下