2015-12-19 53 views
2

我下面頁面上的建議,check if string ends with certain pattern匹配字符串(正則表達式)的Java

我想顯示一個字符串,它是

  • 開始與任何
  • 有字母「結束的.mp4「在它
  • 明確完」,(撇號接着逗號)

這裏是我的Java代碼:

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

class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     // your code goes here 
     String str = " _file='ANyTypEofSTR1ngHere_133444556_266545797_10798866.mp4',"; 
     Pattern p = Pattern.compile(".*.mp4[',]$"); 
     Matcher m = p.matcher(str); 
     if(m.find()) 
      System.out.println("yes"); 
     else 
      System.out.println("no"); 
    } 
} 

它打印出 「無」。我應該如何申報我的RegEx?

回答

3

,我們在您的正則表達式的幾個問題:

  1. 「有字母它.mp4」是指什麼地方,不一定只是在',面前,讓另一.*應插入。
  2. .匹配任何字符。使用\.來匹配.
  3. [,']是一個字符組,即括號中的字符只有一個必須出現。

您可以使用以下正則表達式來代替:

Pattern p = Pattern.compile(".*\\.mp4.*',$"); 
+0

Thanks.Really清楚。 爲什麼在使用** \。**與點匹配之前使用了反斜槓 – Pradeep

+0

@Pradeep:由於在正則表達式中'.'與任何字符匹配,但只想匹配字符串,如果它包含'.mp4 '作爲子字符串,您需要使用'\ .mp4',否則它會匹配包含'xmp4'的字符串,但不匹配'.mp4'。雙反斜槓只是一個反斜槓 – fabian

3

您的字符集[',]正在檢查字符串是否以單次結尾爲',

如果要將這些字符匹配一次或多次,請使用[',]+。然而,你可能不希望在這種情況下使用字符集,因爲你說的順序很重要。

要匹配撇號後跟逗號,只需使用:

.*\\.mp4',$ 

而且,由於.具有特殊的意義,你需要逃避它在」約會專家' 。

相關問題