前面有模式的正则表达式匹配字符



给定以下设置:

  • 输入="window.addEventListener('click', (s, d) => {});"

  • 期望的匹配="(s, d) =>"

尝试了正则表达式

(.*).*=>

但这会匹配"('click', (s, d) =>",这是不希望的。

关于如何修改正则表达式以使匹配仅从"=>"符号之前最接近的左括号开始的任何想法?

任何帮助都非常感谢!

您可以将此正则表达式与re.findall一起使用:

>>> s = "window.addEventListener('click', (s, d) => {});"
>>> print (re.findall(r'([^()]*)s*=>', s)[0])
(s, d) =>

正则表达式详细信息:

  • (: 匹配(
  • [^()]*:匹配 0 或更多未()的字符
  • ): 匹配)
  • s*=>:匹配 0 个或多个空格,后跟文本=>

这是你需要使用的。 更精确地向后看 https://javascript.info/regexp-lookahead-lookbehind

(?<=().+((.+).*=>)

参见正则表达式101

基本上是第一个打开的括号的回溯,以及所需结果的捕获组。

最新更新