2014-07-02 41 views
3

我試圖提取'/'和'。'之間的字符串。的URL。例如,我有一個像「some.com/part1/part2/part3/stringINeed.xyz」的URL。我需要從上面的URL中提取「stringINeed」,最後一個'/'和'。'之間的那個。沒有其他的。從URL提取字符串的一部分 - Java正則表達式

到目前爲止,我試過以下,它給出了一個空的輸出:

import java.util.*; 
import java.lang.*; 
import java.io.*; 
import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

class Extract 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     String str = "part1/part2/part3/stringINeed.xyz" ; 
     Pattern pattern = Pattern.compile("/(.*?)."); 
     Matcher matcher = pattern.matcher(str); 
     if (matcher.find()) { 
    System.out.println(matcher.group(1)); 
     } 
    } 
} 

什麼是錯我的代碼。誰能幫忙?

+0

您是否擁有完整的URL或只是其中的一部分? –

+0

我有一個完整的URL像http://example.com/part1/part2/等等。部分URL的工作,因爲我最終最終將從servlet請求中提取URI – Vamsee

回答

1

使用這個表達式:

[^/.]+(?=\.[^.]+$) 

demo

在Java:

Pattern regex = Pattern.compile("[^/.]+(?=\\.[^.]+$)"); 
Matcher regexMatcher = regex.matcher(subjectString); 
if (regexMatcher.find()) { 
    ResultString = regexMatcher.group(); 
} 

說明

  • [^/.]+比賽是不是一個斜線或點
  • 先行(?=\.[^.]+)斷言任何字符,後面的內容點之後非點和字符串的末尾
+0

謝謝,很高興它有幫助。 :) – zx81

+0

Thaks爲您的答案Zx81。爲我工作! – Vamsee

0

不含拒絕

str .substring(str .lastIndexOf("/"), str .lastIndexOf(".")).replaceAll("/", "") 
相關問題