[英]Retrieving Regex matched pattern
我需要从给定的输入中检索正则表达式模式匹配的字符串。
可以说,我需要得到的模式是
"http://mysite.com/<somerandomvalues>/images/<againsomerandomvalues>.jpg"
现在,我为此创建了以下正则表达式模式,
http:\/\/.*\.mysite\.com\/.*\/images\/.*\.jpg
谁能说明如何使用Java使用此regx表达式检索所有匹配的模式?
一些简单的Java示例:
String my_regex = "http://.*.mysite.com/.*/images/.*.jpg";
Pattern pattern = Pattern.compile(my_regex);
Matcher matcher = pattern.matcher(string_to_be_matched);
// Check all occurance
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
您无需掩盖斜线,但可以掩盖文字点:
String regex = "http://(.*)\\.mysite\\.com/(.*)/images/(.*)\\.jpg";
String url = "http://www.mysite.com/work/images/cat.jpg";
Pattern pattern = Pattern.compile (regex);
Matcher matcher = pattern.matcher (url);
if (matcher.matches ())
{
int n = matcher.groupCount ();
for (int i = 0; i <= n; ++i)
System.out.println (matcher.group (i));
}
结果:
www
work
cat
实际上,不清楚是要整个匹配字符串还是仅需要组。
if ( matcher.matches () ) System.out.println(string_to_be_matched);
因为您知道它是数学运算,并且没有组。
恕我直言,如果您想获得匹配的组,则未知用户的答案是正确的。
我只想添加其他信息(其他信息),如果您需要匹配的组,也可以使用replaceFirst()
方法:
String firstGroup = string.replaceFirst( "http://mysite.com/(.*)/images/", "$1" );
但是 ,如果有两个或多个组,或者如果您需要多次执行,则Pattern.compile方法的性能会更好(例如,在编程竞赛中,编写replaceFirst()
更快)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.