我正在使用此正则表达式("http:|"https:)\/\/.*\/content\/amc\/tdd\/.*?"
查找所有以http或https开头并包含/ content / amc / tdd的URL。
但是对于文字
"<a id='cdq_element_175_link' href='http://google.com' data-href='edit' >
<img src=\"http://localhost:8080/content/amc/tdd/abc/download_1.jpeg?
ch_ck=1548843340209\" alt=\"\" id=\"element_175\" style=\"height: 135.575px; width: 135.575px;\" data-href=\"edit\">
<img src=\"http://localhost:8080/content/amc/tdd/abc/download_1.jpeg?ch_ck=1548843340209\" alt=\"\" id=\"element_175\" style=\"height: 135.575px; width: 135.575px;\" data-href=\"edit\">
</a>"
我没有得到两个与模式匹配的字符串,而是从第一个实例到最后一个实例获取了完整的字符串。
我在做什么错了?
答案 0 :(得分:2)
由于正则表达式.*
中的内容是贪婪的匹配,因此它将占用您的所有字符串。
您应将其更改为.*?
像这样:
("http:|"https:)\/\/.*?\/content\/amc\/tdd\/.*?"
答案 1 :(得分:2)
尝试此正则表达式:
"https?:\/\/(?:[^\/]*\/)*?content\/amc\/tdd[^"]*"
说明:
"https?:\/\/
-匹配"http://
或"https://
(?:[^\/]*\/)*?
-匹配0+次出现的不是/
后跟/
的任何字符。将该子模式至少重复0次或多次。content\/amc\/tdd
-匹配content/amc/tdd
[^"]*"
-匹配0+次出现的不是"
后跟"
的任何字符