Regex 正则表达式:仅当匹配大于一个字符时,才在两个字符之间进行匹配

Regex 正则表达式:仅当匹配大于一个字符时,才在两个字符之间进行匹配,regex,Regex,我的文本: 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 如果您计划在括号内捕获一个链接

我的文本:

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

如果您计划在括号内捕获一个链接,该链接在一行中以
http
开头,以最后一个
结尾,请使用

\((http.*)\)

如果您计划匹配一个不包含数字块的
(…)
,直到最后一个
,您可以使用

\((?!\d+\))(.*)\)

(?!\d+\)
负前瞻将使所有匹配失败,其中
后跟一个或多个数字,然后是

如果字符串总是包含平衡圆括号,并且您可以使用PCRE,您可以考虑

(?!\(\d+\))(\(((?:[^()]++|(?1))*)\))

看。该值在第2组中。正则表达式将匹配任何一组非
(数字)

的平衡圆括号。如果您计划捕获一行上最后一个圆括号内的链接,请使用
\((http.*)\)
。如果您计划匹配不包含数字块的
(…)
,您可以使用
\(?!\d+\)(.*)
,这非常有效,谢谢!顺便说一句,您的问题与您的用例不符,因为您的正则表达式捕获的链接比您想要的多,而不是标题中所说的只有一个字符,并且在互动程序中回答您的问题:您可以通过编写
A{X,Y}
来表示希望X到Y出现“A”。如果您错过了Y,则是X到无限出现
A{X,}
->在您的情况下
(匹配){2,}