Regular Expression for matching parentheses

前端 未结 5 1318

What is the regular expression for matching \'(\' in a string?

Following is the scenario :

I have a string

str = \"abc(efg)\";
相关标签:
5条回答
  • 2020-12-14 00:09
    • You can escape any meta-character by using a backslash, so you can match ( with the pattern \(.
    • Many languages come with a build-in escaping function, for example, .Net's Regex.Escape or Java's Pattern.quote
    • Some flavors support \Q and \E, with literal text between them.
    • Some flavors (VIM, for example) match ( literally, and require \( for capturing groups.

    See also: Regular Expression Basic Syntax Reference

    0 讨论(0)
  • 2020-12-14 00:16

    Two options:

    Firstly, you can escape it using a backslash -- \(

    Alternatively, since it's a single character, you can put it in a character class, where it doesn't need to be escaped -- [(]

    0 讨论(0)
  • 2020-12-14 00:18

    The solution consists in a regex pattern matching open and closing parenthesis

    String str = "Your(String)";
    // parameter inside split method is the pattern that matches opened and closed parenthesis, 
    // that means all characters inside "[ ]" escaping parenthesis with "\\" -> "[\\(\\)]"
    String[] parts = str.split("[\\(\\)]");
    for (String part : parts) {
       // I print first "Your", in the second round trip "String"
       System.out.println(part);
    }
    

    Writing in Java 8's style, this can be solved in this way:

    Arrays.asList("Your(String)".split("[\\(\\)]"))
        .forEach(System.out::println);
    

    I hope it is clear.

    0 讨论(0)
  • 2020-12-14 00:23

    Because ( is special in regex, you should escape it \( when matching. However, depending on what language you are using, you can easily match ( with string methods like index() or other methods that enable you to find at what position the ( is in. Sometimes, there's no need to use regex.

    0 讨论(0)
  • 2020-12-14 00:32

    For any special characters you should use '\'. So, for matching parentheses - /\(/

    0 讨论(0)
提交回复
热议问题