2015-12-19 2 views
2

Я следую предложения на странице, check if string ends with certain patternMatch Строка заканчивается (регулярное выражение) Java

Я пытаюсь отобразить строку,

  • Запуски с ничего
  • Имеет буквы " .mp4 "в нем
  • Ends явно с », (апостроф с последующей запятой)

Вот мой 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',$ 

Кроме того, поскольку . имеет особое значение, вам нужно, чтобы избежать его в».mp4' .

Смежные вопросы