代码之家  ›  专栏  ›  技术社区  ›  menteith

重写要在Java中使用的regex

  •  1
  • menteith  · 技术社区  · 5 年前

    我已经写信了 (?<=pp_).*(?=') pp_ 像这样的弦

    ['newPage', 'pp_vii', -1]

    online regex validator

    Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
    String input = "['newPage', 'pp_vii', -1])";
    Matcher m = pattern.matcher(input);
    boolean match = m.matches(); // false
    
    2 回复  |  直到 5 年前
        1
  •  0
  •   Samuel Philipp    5 年前

    你的正则表达式很好。这个 Matcher.matches() docs ). 你应该使用 Matcher.find() 相反找到与模式匹配的下一个子序列( docs

    Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
    String input = "['newPage', 'pp_vii', -1])";
    Matcher m = pattern.matcher(input);
    boolean stringMatches = m.matches(); // false
    boolean isThereMatch = m.find(); // true
    System.out.println(isThereMatch + " " + stringMatches);
    System.out.println(m.group());
    

    打印:

    true false
    vii
    
        2
  •  1
  •   Pranav C Balan    5 年前

    这个 matches() find() group() 方法来获取匹配的子序列字符串。

    public static void main(String[] args) {
    Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
    String input = "['newPage', 'pp_vii', -1])";
    Matcher m = pattern.matcher(input);
    boolean a = m.find(); 
    
    if(a){
        String out = m.group();
        System.out.println("Match : " + out);
    }