regex : how to match word ending with parentheses “)”

前端 未结 3 1094
礼貌的吻别
礼貌的吻别 2020-12-22 08:32

I want to match string ending with \')\' . I use pattern :

 \"[)]\\b\" or \".*[)]\\b\"

It should match the string :

x=main2         


        
相关标签:
3条回答
  • 2020-12-22 09:09

    If you want to capture a string ending in ) (and not just find a trailing )), then you can use this in JS:

    (.*?\)$)
    

    (....) - captures the defined content;

    .*? - matches anything up to the next element;

    \)$ - a ) at the end of the string (needs to be escaped);

    Regex101

    0 讨论(0)
  • 2020-12-22 09:14

    The \b only matches a position at a word boundary. Think of it as a (^\w|\w$|\W\w|\w\W) where \w is any alphanumeric character and \W is any non-alphanumeric character. The parenthesis is non-alphanumeric so won't be matched by \b.

    Just match a parethesis, followed by the end of the string by using \)$

    0 讨论(0)
  • 2020-12-22 09:15

    The \b word boundary is ambiguous: after a word character, it requires that the next character must a non-word one or the end of string. When it stands after a non-word char (like )) it requires a word character (letter/digit/underscore) to appear right after it (not the end of the string here!).

    So, there are three solutions:

    • Use \B (a non-word boundary): .*[)]\B (see demo) that will not allow matching if the ) is followed with a word character
    • Use .*[)]$ with MULTILINE mode (add (?m) at the start of the pattern or add the /m modifier, see demo)
    • Emulate the multiline mode with an alternation group: .*[)](\r?\n|$) (see demo)
    0 讨论(0)
提交回复
热议问题