【发布时间】:2011-02-04 14:59:52
【问题描述】:
我的正则表达式知识缺乏,我正在尝试解决以下问题。
我想编写一个表达式以仅匹配 Web 应用程序根路径中的 HTML (*.html) 文件。例如
以下应匹配:
/myfile.html
以下内容不应匹配(包含子目录):
/home/myfile.html
我现在的表情:
^/(.*.html)$
不满意,因为它会匹配子目录中的文件。
谁能帮我解决这个问题?
谢谢,
安德鲁
【问题讨论】:
标签: regex
我的正则表达式知识缺乏,我正在尝试解决以下问题。
我想编写一个表达式以仅匹配 Web 应用程序根路径中的 HTML (*.html) 文件。例如
以下应匹配:
/myfile.html
以下内容不应匹配(包含子目录):
/home/myfile.html
我现在的表情:
^/(.*.html)$
不满意,因为它会匹配子目录中的文件。
谁能帮我解决这个问题?
谢谢,
安德鲁
【问题讨论】:
标签: regex
试试这个:
^/([^/]+\.html)$
[^/]+ 将匹配除/ 之外的任何内容
html 之前的点被转义为只匹配一个点而不匹配任何字符
(参见 Andrea Spadaccini 的回答)
【讨论】:
您需要从 .* 子表达式中排除斜杠:
^/([^/]*\.html)$
另外,你应该在 html 之前转义点,否则你会匹配任何以 html 结尾的东西,比如/testhtml。
【讨论】:
.html 中的.(现在在我的回答中更改了这个)
使用[^/] 而不是点。括号构成一个字符类,插入符号表示该类将不匹配其后的任何字符。还要确保在文件扩展名之前转义您想要的文字点。
这使得整个表达式^/([^/]*\.html)$。
【讨论】:
您希望从表达式的 (.*) 部分中排除斜杠。此外,您应该转义引入文件扩展名的点。否则,它将匹配任何字符。
^/([^/]*\.html)$
【讨论】:
添加 ^/,表示字符串中的斜杠与正则表达式不匹配。
【讨论】: