给定以下设置:
-
输入=
"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
基本上是第一个打开的括号的回溯,以及所需结果的捕获组。