[英]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.