如何将感叹号视为正则表达式中URL的一部分

时间:2014-09-02 08:48:52

标签: regex url

如何将感叹号视为正则表达式中URL的一部分

实施例: 原始网址为:bla1 bla2 http://www.peckale.com/#!contact/c11m6 bla3 我需要找到网址:http://www.peckale.com/#!contact/c11m6

使用正则表达式。

我正在使用这次考验:

((www\.|(http|https|ftp|news|file)+\:\/\/)?[&#95;.a-zA-Z0-9-]+\.[a-zA-Z0-9\/&#95;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)]*)

但结果是: 在#

之后剪切网址

祝你好运 沙哈尔

2 个答案:

答案 0 :(得分:0)

如果要匹配全文中的网址,请使用以下网址:

(?:www\.|(?:https?|ftp|news|file):\/\/)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]

请注意,最后一个字符类会确保如果URL是某些文本的一部分,则在URL不被解释为URL的一部分后,标点符号(如逗号或句点)将被标记为句点。只有当它们位于URL的中间时才会使用感叹号(!)这样的符号,但如果它位于URL的末尾则不会匹配它

参见演示......

http://regex101.com/r/uG0mD2/3

答案 1 :(得分:0)

只需从上一个被否定的字符类!中删除[^.|\'|\# |!|\(|?|,| |>|<|;|\)]

((www\.|(http|https|ftp|news|file)+\:\/\/)?[&#95;.a-zA-Z0-9-]+\.[a-zA-Z0-9\/&#95;:@=.+?,##%&~-]*[^.|\'|\#|\(|?|,| |>|<|;|\)]*)

DEMO

我的建议是,您不需要在字符类中包含|符号。

因此[^.|\'|\#|\(|?|,| |>|<|;|\)]原来是[^.'#\(?, ><;\)]