我的文字:
Lorem_Ipsum_Resume (1).pdf (https://dl.web.com/Lorem_Ipsum_Resume%20(1).pdf)
我正在尝试提取:
https://dl.web.com/Lorem_Ipsum_Resume%20(1).pdf
我正在使用此表达式来匹配括号之间的文本:
/\((.*)\)/
但它正在返回:
1).pdf (https://dl.web.com/Lorem_Ipsum_Resume%20(1).pdf
答案 0 :(得分:3)
如果您打算在一行中以http
开头并以最后)
结尾的括号内捕获链接,请使用
\((http.*)\)
请参见regex demo
如果您计划匹配不包含数字块的(...)
,并且不匹配最后一个)
,则可以使用
\((?!\d+\))(.*)\)
(?!\d+\))
否定超前会使所有匹配失败,其中(
后跟1个或多个数字,然后是)
。
如果字符串始终包含平衡的括号并且可以使用PCRE,则可以考虑
(?!\(\d+\))(\(((?:[^()]++|(?1))*)\))
请参见another regex demo。该值在第2组中。正则表达式将匹配任何非(DIGITS)
的平衡括号集。