我有一个文本和一个正则表达式模式
文本类似于
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 的文本,你不想匹配包含在 html img
标签中的那些。如果是这样,请尝试以下操作:
/(?<!src=")(https?|ftp)://(www.)?([w-.]+).([a-z]{1,5}+)/?([w.?=&-~/%+;]+)?(#(w+))?/
笔记:
- 您可以将
[A-Za-z0-9_]
替换为字符类w
(在perlre中阅读更多内容)。 - 您尝试
(?!pattern)
断言是负面的前瞻断言。在您的情况下,您想要一个负面的后视(?<!pattern)
(同样,您可以阅读perlre以获取更多信息)。