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,}