读书人

求好手解答 正则表达式 (急)

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

求高手解答 正则表达式 (急)

我是正则表达式的菜鸟,求搭救:

有这样的模式:
String s ="jdkjfd9dskjflkfdhjdhfkjlj";
Matcher m =Pattern.compile("(.*)(f)(.*)").matcher(s);

然后我想要的是,
字符串中一共有4个f,要求得到匹配第一个f的前面内容和后面内容,然后把后面内容作为继续要匹配的字符串继续循环进行。
换句话说就是: 我想得到每次比较的第一个匹配成功的内容。
如:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegx {

public static void main(String [] args)
{
String s ="jdkjfd9dskjflkfdhjdhfkjlj";
Matcher m =Pattern.compile("(.*)f(.*)").matcher(s);

while(m.find())
{
System.out.println(m.group(1));
System.out.println(m.group(2));
}

}

}
得到的是 :jdkjfd9dskjflkfdhjdh
kjlj

而我想得到的是: jdkj
d9dskjflkfdhjdhfkjlj





[解决办法]
改成

Java code
Matcher m =Pattern.compile("(.*?)f(.*)").matcher(s); //注意.*?和.*的区别
[解决办法]
(?:(?!f).)+(?:(?=f)|$)
[解决办法]

名字:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)area\1[^>]*>([^<]+)

地区:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)area\1[^>]*>([^<]+)

智力:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)power\1[^>]*>([^<]+)

读书人网 >Java相关

热点推荐