我的正则表达知识缺乏,我正在尝试解决以下问题。
我想编写一个表达式,以匹配Web应用程序根路径中的HTML(* .html)文件。 E.g。
以下内容应符合:
/myfile.html
以下内容不应匹配(包含子目录):
/home/myfile.html
我目前的表达:
^ /(。*。HTML)$
不满意,因为它会匹配子目录中的文件。
有人可以帮我解决这个问题吗?
谢谢,
安德鲁
答案 0 :(得分:4)
试试这个:
^/([^/]+\.html)$
[^/]+
将匹配/
html之前的点被转义为仅匹配一个点而不是任何字符
(见Andrea Spadaccini的回答)
答案 1 :(得分:3)
您需要从.*
子表达式中删除斜杠:
^/([^/]*\.html)$
此外,您应该在html之前转义点,否则您将匹配以html结尾的任何内容,例如/testhtml
。
答案 2 :(得分:2)
使用[^/]
代替点。括号构成一个字符类,而插入符表示该类不匹配任何字符。另外,请确保在文件扩展名之前转义所需的文字点。
这使整个表达式^/([^/]*\.html)$
。
答案 3 :(得分:2)
您想要从表达式的(。*)部分中排除斜杠。此外,您应该转义引入文件扩展名的点。否则,它将匹配任何角色。
^/([^/]*\.html)$
答案 4 :(得分:0)
添加^ /,这意味着字符串中的斜杠与正则表达式不匹配。