我正在尝试编写一个模式,用于提取HTML中img标记中找到的文件的路径.
String string = "<img src=\"file:/C:/Documents and Settings/elundqvist/My Documents/My Pictures/import dialog step 1.JPG\" border=\"0\" />";
Run Code Online (Sandbox Code Playgroud)
我的模式:
src\\s*=\\s*\"(.+)\"
Run Code Online (Sandbox Code Playgroud)
问题是我的模式还将包含img标签的'border ="0"部分.
什么模式匹配此文件的URI路径而不包括'border ="0"?
Seb*_*etz 34
你的模式应该是(未转义):
src\s*=\s*"(.+?)"
Run Code Online (Sandbox Code Playgroud)
重要的部分是添加的问号,尽可能少地匹配组
小智 8
只有当它在标记内部而不是在其他地方以纯文本形式写入时,才能获取src.它还会检查您是否在src属性之前或之后添加了其他属性.
此外,它确定您是使用单引号(')还是双引号(").
\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>
Run Code Online (Sandbox Code Playgroud)
所以对于PHP你会这样做:
preg_match("/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/", $string, $matches);
echo "$matches[1]";
Run Code Online (Sandbox Code Playgroud)
对于JavaScript,你会做:
var match = text.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)
alert(match[1]);
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助.
我通过使用这个正则表达式解决了这个问题。
/<img.*?src="(.*?)"/g
Run Code Online (Sandbox Code Playgroud)
在https://regex101.com/r/aVBUOo/1中验证
归档时间: |
|
查看次数: |
27095 次 |
最近记录: |