如何将感叹号视为正则表达式中URL的一部分
实施例: 原始网址为:bla1 bla2 http://www.peckale.com/#!contact/c11m6 bla3 我需要找到网址:http://www.peckale.com/#!contact/c11m6
使用正则表达式。
我正在使用这次考验:
((www\.|(http|https|ftp|news|file)+\:\/\/)?[_.a-zA-Z0-9-]+\.[a-zA-Z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)]*)
但结果是: 在#
之后剪切网址祝你好运 沙哈尔
答案 0 :(得分:0)
如果要匹配全文中的网址,请使用以下网址:
(?:www\.|(?:https?|ftp|news|file):\/\/)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]
请注意,最后一个字符类会确保如果URL是某些文本的一部分,则在URL不被解释为URL的一部分后,标点符号(如逗号或句点)将被标记为句点。只有当它们位于URL的中间时才会使用感叹号(!)这样的符号,但如果它位于URL的末尾则不会匹配它
参见演示......
答案 1 :(得分:0)
只需从上一个被否定的字符类!
中删除[^.|\'|\# |!|\(|?|,| |>|<|;|\)]
。
((www\.|(http|https|ftp|news|file)+\:\/\/)?[_.a-zA-Z0-9-]+\.[a-zA-Z0-9\/_:@=.+?,##%&~-]*[^.|\'|\#|\(|?|,| |>|<|;|\)]*)
我的建议是,您不需要在字符类中包含|
符号。
因此[^.|\'|\#|\(|?|,| |>|<|;|\)]
原来是[^.'#\(?, ><;\)]