我要做的是从这样的字符串中获取文本和网址:
这是一个标题[http://awebsite.com/a/download.zip]
这是我正在使用的正则表达式:
/(.*?)[(.*?)]/
我知道问题是什么......第一个(.*?)
匹配整个字符串!但我不确定如何才能使它与第一个[
出现相匹配。
解释我做错了什么以及如何修复将是非常感谢你。我将最终学习正则表达式!
谢谢你们
PS:使用php和preg_match
函数。
答案 0 :(得分:3)
你的问题不是第一部分而是第二部分。
你必须逃避[像这样:
/(.*?)\[(.*?)]/
说明:
"
( # Match the regular expression below and capture its match into backreference number 1
. # Match any single character
*? # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
)
\[ # Match the character “[” literally
( # Match the regular expression below and capture its match into backreference number 2
. # Match any single character
*? # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
)
] # Match the character “]” literally
"
答案 1 :(得分:2)
[(.*?)]
是一个字符类,匹配以下内容之一:'('
,'.'
,'*'
,'?'
或')'
。
您需要转义[
,使其与文字'['
匹配(而]
并不特殊,因此不需要转义。)
/(.*?)\[(.*?)]/
答案 2 :(得分:2)
你几乎得到了它,但是试着逃避分组字符[和],所以你会得到:
/(.*?)\[(.*?)\]/
答案 3 :(得分:1)
您需要转义[]
个字符:
/(.*?)\[(.*?)\]/