【问题标题】:Match String ending with (regex) java匹配以(正则表达式)java结尾的字符串
【发布时间】:2016-03-26 04:08:15
【问题描述】:

我正在关注页面上的建议,check if string ends with certain pattern

我正在尝试显示一个字符串

  • 从任何事物开始
  • 里面有字母“.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?

【问题讨论】:

    标签: java regex pattern-matching


    【解决方案1】:

    你的正则表达式有几个问题:

    1. “里面有.mp4的字母”是指某处,不一定就在',前面,所以应该插入另一个.*。
    2. . 匹配任何字符。使用\. 匹配.
    3. [,'] 是一个字符组,即必须出现括号中的字符之一。

    您可以改用以下正则表达式:

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

    【讨论】:

    • 谢谢。真的很清楚。为什么在使用 \. 匹配点之前使用反斜杠
    • @Pradeep:由于正则表达式中的.匹配任何字符,但您只想匹配字符串,如果它包含.mp4作为子字符串,则需要使用\.mp4,否则它匹配包含xmp4 的字符串,但也不匹配.mp4。双反斜杠只是转义一个反斜杠
    【解决方案2】:

    您的字符集[',] 正在检查字符串是否以' 或, 结尾。

    如果您想匹配这些字符一次或多次,请使用[',]+。但是,您可能不想在这种情况下使用字符集,因为您说顺序很重要。

    要匹配后跟逗号的撇号,只需使用:

    .*\\.mp4',$
    

    另外,由于.有特殊含义,需要在'.mp4'中转义。

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2011-09-23
      • 1970-01-01
      • 2015-04-27
      相关资源
      最近更新 更多