C#正则表达式匹配动态HTML文档中assets路径下的文件名
正则实现方案
你可以根据你的使用场景选择以下两种正则:
直接提取结果版本(支持反向预查的引擎)
(?<=\/?assets\/)[^\/]+(?=\/?$)
匹配结果直接就是目标文件名,不需要额外提取分组。
兼容全版本(带分组提取)
\/?assets\/([^\/]+)\/?$
提取第一个分组的内容即可得到目标文件名。
匹配逻辑说明
\/?:匹配开头可选的斜杠,覆盖带根路径前缀和不带前缀的两种场景assets\/:匹配固定的assets目录标识和后面的目录分隔斜杠[^\/]+:匹配所有非斜杠的连续字符,就是你需要提取的目标文件名(?=\/?$):正向预查匹配结尾可选的斜杠,不会将结尾斜杠纳入匹配结果
如果你使用的正则引擎不支持反向预查(比如低版本JavaScript、部分旧版本编程语言),优先选择带分组的版本即可。
测试覆盖情况
你提到的四个场景全部可以正常匹配:
/assets/sdluxdczm3ee4000/:提取结果sdluxdczm3ee4000/assets/sdluxdczm3ee4000:提取结果sdluxdczm3ee4000assets/sdluxdczm3ee4000/:提取结果sdluxdczm3ee4000assets/sdluxdczm3ee4000:提取结果sdluxdczm3ee4000
代码示例(以Python为例)
import re html_content = "你的HTML全文内容" # 用带分组的版本,兼容性更强 regex = r"\/?assets\/([^\/]+)\/?$" file_names = re.findall(regex, html_content, re.M) print(file_names)
内容的提问来源于stack exchange,提问作者Nika Petriashvili
相关产品推荐
相关产品推荐

