刚才发为自己明白了 做了一个实验发现自己还是不明白
import java.util.regex.*;
class shiyan
{ public static void main(String args[])
{
String s1="wufangdong12489dna";
Pattern pattern=Pattern.compile("\\w+\\d+\\w+");
Matcher matcher=pattern.matcher(s1);
while(matcher.find())
{
System.out.println(matcher.group());
}
}
}
上面这些代码 为什么只会输出wufangdong12489dna?
象
ufangdong12489dna fangdong12489dna这样的难道就不符合这个表达式么?还有我把("\\w+\\d+\\w+");改成("\\w+(\\d+)\\w+"); 再把group()改成group(1)为啥只输出9? 别的数字呢?各位老大们 请别回“看api” 我是看了才上来问滴 要是看懂了我就不上来问了。
谢谢回答!
import java.util.regex.*;
class shiyan
{ public static void main(String args[])
{
String s1="wufangdong12489dna";
Pattern pattern=Pattern.compile("\\w+\\d+\\w+");
Matcher matcher=pattern.matcher(s1);
while(matcher.find())
{
System.out.println(matcher.group());
}
}
}
上面这些代码 为什么只会输出wufangdong12489dna?
象
ufangdong12489dna fangdong12489dna这样的难道就不符合这个表达式么?还有我把("\\w+\\d+\\w+");改成("\\w+(\\d+)\\w+"); 再把group()改成group(1)为啥只输出9? 别的数字呢?各位老大们 请别回“看api” 我是看了才上来问滴 要是看懂了我就不上来问了。
谢谢回答!
Pattern pattern = Pattern.compile("\\w+?\\d+\\w+?");
"wufangdong12489d"
"(\\w+)(\\d+)(\\w+)"输出group(1)/group(2)/group(3)看看结果
-------
既然前面的包含在内也匹配的话,不可能忽略前面的就取后面的,不然正则式的组合岂不是太多,效率太低