需求:编写仅匹配含内容的固定函数名及括号的正则表达式
正则表达式解决方案
要精准匹配my_func(...)的函数名+括号(仅当括号内是单引号包裹的网址时),你可以用这个正则:
my_func\((?='https?://[^']+')\)
规则拆解:
my_func\(:精准匹配固定函数名和左括号(?='https?://[^']+'):正向预查断言,确保左括号后紧跟的是:- 单引号开头
- 以
http://或https://开头的网址内容 - 直到遇到闭合的单引号(
[^']+表示匹配任意非单引号的字符)
\):匹配右括号
原正则的局限:
你写的my_func\((?=[^\)]+)\)仅判断括号内有非)的内容,但没限定必须是单引号包裹的网址——像my_func(abc)、my_func(123)这类不符合要求的内容也会被误匹配。
测试效果:
- 匹配成功:
my_func('https://old.reddit.com')→ 捕获my_func(和) - 匹配失败:
my_func()、my_func('not-a-url')、my_func(123)
内容的提问来源于stack exchange,提问作者lzy917
相关产品推荐
相关产品推荐

