【问题标题】:Regex to match a string after colon ":" [duplicate]正则表达式匹配冒号“:”后的字符串 [重复]
【发布时间】:2019-08-19 23:45:23
【问题描述】:

我需要根据正则表达式从任何字符串中识别子字符串。

例如,取以下字符串:

  1. 发出发货通知:UserName1
  2. 发货通知:未找到用户,UserName2
  3. 发出收货通知:UserName1
  4. 发出收货通知:未找到用户,UserName2

我想得到冒号后的文字

  1. 用户名1
  2. 找不到用户,UserName2
  3. 用户名1
  4. 找不到用户,UserName2

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以像这样使用正则表达式:

    ":(.*)"
    

    那么,你应该使用类似这样的东西(在 Java 上):

    Matcher m = Pattern.compile(":(.*)").matcher(text);
    
    if (m.find())
    {
        System.out.println(m.group(1));
    }
    

    【讨论】:

    • 有没有办法做到这一点,所以它排除了冒号?所以对于某些东西:价值,我希望它返回“价值”
    • @Dan Hastings,您尝试过我发布的代码吗?它不包括冒号。
    • 对我来说,它返回以冒号开头的字符串
    • @DanHastings 但它不能。我在 Java 上的示例运行良好,所以我不能告诉你你做错了什么。您可以提出一个新问题并提供返回带有冒号的字符串的代码。
    【解决方案2】:

    我想这就是你要找的东西:

    (?<=:).*
    

    【讨论】:

      【解决方案3】:
      import java.util.regex.Matcher; import java.util.regex.Pattern;
      
      public class MatchColon {
      
          private Pattern pattern;
          private Matcher matcher;
      
          private static final String MATCHCOLON_PATTERN =
              ":(.*)";
      
          public MATCHCOLON(){
            pattern = Pattern.compile(MATCHCOLON_PATTERN);
          }
      
          public boolean validate(final String colon){
            matcher = pattern.matcher(colon);
            return matcher.matches();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多