通过正则表达式从文本中获取所有URL

时间:2015-10-28 08:55:35

标签: regex

我需要使用正则表达式从文本文件中获取所有网址。但并非所有url,url都是以某个模板开头的。例如。我有文字:

{"Field_Name1":"http://google.ru","FieldName2":
"["some text", "http://example.com/view/...&id..&.."]",
"FieldName3": "http://example.com/edit/&id..."}someText"
["some text", "http://example.com/view/...&id..&.."]",
"FieldName3": "http://example.com/view/&id..."}someText2{..}someText.({})

我需要获取所有网址http://example.com/view/..... 我尝试使用这个正则表达式,但它不起作用。也许我有一些错误。

 ^(http|https|ftp)\://example\.com\/view\/+[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?[^\.\,\)\(\s]$

我不需要纯网址检查程序,我需要能够获取以某个模板开头的网址的检查程序

3 个答案:

答案 0 :(得分:1)

这个怎么样?

((ftp|http[s]?):\/\/example.com\/view\/.*?)\"

第一部分直到“/ view /”应该清楚。其余的“。*?”\“”表示,在双引号之前显示所有内容。

答案 1 :(得分:0)

我认为这会奏效!我把它放在了regexr.com上,它似乎只选择了url部分,因为文本字符串实际上并没有连续多个句点。

  

("?!)。H + + [A-Z] *

编辑:做得更好,或者至少我认为我做了。基本上表达式是:"寻找引号,如果下一个字符是 h ,那么在匹配中包含它并将其作为起点,然后包含任何字符导致一个句号,然后是任何小写字母。可能有一百万。只要在它之前有一段时间,你就会很好,除非在字符串之后的另一个时期,否则它不会超越它。

答案 2 :(得分:0)

环球:

/(ftp|http|https)\:\/\/([\d\w\W]*?)(?=\")/igm 

模板:

/(ftp|http|https)\:\/\/example\.com\/view\/([\d\w\W]*?)(?=\")/igm