【发布时间】:2021-02-04 12:50:39
【问题描述】:
我有一个检测网址的正则表达式:
@"((http|ftp|https)\:\/\/)?([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?";
我将它与 regex.replace 一起使用以从文本中删除 url。
我不希望它替换任何以 /images 开头的单词
例如,如果文本是“这是我的文本,这里是一个链接 http://dfdf.com,我的是 /images/dd.gif” 我需要 http://dfdf.com 替换但不需要 /images/dd.gif
我的正则表达式替换了 dd.gif 所以我想否定图像之后的任何单词/
知道如何解决这个问题吗?
【问题讨论】:
-
http://dfdf.com/images/dd.gif应该怎么办? -
试试
(?<!\S)(?:(?:https?|ftps?)://)?([\w-]+(?:\.[\w-]+)+)([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?。注意\w匹配_,所以[\w_]=\w。 -
或者,
\b(?<!\bimages/)(?:(?:https?|ftps?)://)?([\w-]+(?:\.[\w-]+)+)([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])??见this regex demo。 -
你不需要转义
:和/,除非你想让你的正则表达式更不可读。