1

我有一个文本和一个正则表达式模式

文本类似于

foo https://www.google.hu <img ... src="http://a-page.com/foobar.jpg" ...> bar

正则表达式

/(http|https|ftp)\:\/\/(www\.)?([a-zA-Z0-9\-\_\.]+)\.([a-z]{1,5}+)\/([a-zA-Z0-9\.\?\=\&\-\_\~\/\%\+\;]+)?(\#([a-zA-Z0-9\_]+))?/i

我会用特殊情况更新它

如果 url 以 src=" 开头,如果正则表达式匹配不包含图像 url 仅其他 url,那就太好了

我试过这个

/(?!src\=\")(http|https|ftp)\:\/\/(www\.)?([a-zA-Z0-9\-\_\.]+)\.([a-z]{1,5}+)\/([a-zA-Z0-9\.\?\=\&\-\_\~\/\%\+\;]+)?(\#([a-zA-Z0-9\_]+))?/

但它不起作用

请问你能帮帮我吗?

我知道我可以将 (^|\s) 添加到模式中,但是当我想隐藏 url 时它不起作用,因为用户可以在 url 之前写任何字符并且 url 不再隐藏并且其他一些正则表达式代码在也是来源,其中一个是 img bb 标签代码,我不想隐藏(替换)它的 url

(对不起我的英语不好)

4

1 回答 1

1

老实说,我很难理解你到底想要什么,但我猜你的意思是你有一个包含各种 URL 的文本,你不想匹配那些包含在 htmlimg标记中的文本。如果是这样,试试这个:

/(?<!src\=\")(https?|ftp):\/\/(www\.)?([\w\-\.]+)\.([a-z]{1,5}+)\/?([\w\.\?\=\&\-\~\/\%\+\;]+)?(\#(\w+))?/

笔记:

  • 您可以[A-Za-z0-9_]用字符类替换(在perlre\w中阅读更多内容)。
  • 您尝试的(?!pattern)断言是否定的前瞻断言。在你的情况下,你想要一个消极的后视 (?<!pattern)(你可以再次阅读perlre以获取更多信息)。
于 2013-10-04T09:32:12.613 回答