【发布时间】:2020-11-13 02:36:49
【问题描述】:
此时,我在早些时候发布了一些关于 Regex 的相同类型问题。它让我很头疼,我查阅了大量关于如何使用正则表达式的文档,但我仍然无法理解它。我不想再浪费 6 个小时来过滤简单(我认为)的表达式。
所以基本上我想要做的是过滤所有带有 HTML 扩展名结尾的文件类型('*' 星来自 Winforms Tabcontrol,表示文件已被修改。我还需要它们在IgnoreCase:
.html, .htm, .shtml, .shtm, .xhtml
.html*, .htm*, .shtml*, .shtm*, .xhtml*
同时过滤一些 CSS 文件:
.css
.css*
还有一些 SQL 文件:
.sql, .ddl, .dml
.sql*, .ddl*, .dml*
我之前的问题得到了过滤Python文件的答案:
.py, .py, .pyi, .pyx, .pyw
Expression would be: \.py[3ixw]?\*?$
但是当我试图从上面的表达式中学习时,我总是会只打开一个.xhtml,其余的都是无效的。
对于 HTML 表达式,我目前有这个:\.html|.html|.shtml|.shtm|.xhtml\*?$ 和 RegexOptions.IgnoreCase。但输出将只允许.xhtml 区分大小写或不区分大小写。 .html 文件、.htm 和其他文件不匹配。我非常感谢您对您提供的每个表达方式的解释(所以我不必再问同样的问题了)。
谢谢。
【问题讨论】:
-
*在通配符中代表任何 0 个或多个字符。您可能想要(?i)\.[xs]?htm\w*$、(?i)\.css\w*$和(?i)\.py\w*$/(?i)\.py[3ixw]?$。请注意,您仍然没有逃脱所有.s。 -
@WiktorStribiżew 所以我上面的表达式
\.html|.html|.shtml|.shtm|.xhtml\*?$不起作用,因为除了.xhtml之外的所有东西都将.转义了? -
你的问题不太清楚。见what your regex matches。
-
@WiktorStribiżew 感谢您提供。实际上最后一个问题,我在这里用我上面提到的
SQL files的过滤器进行猜测。我试过这个表达式:\.[a-zA-Z]+$。这会是正确的实施方式吗?还是有其他有效的方法?再次感谢。 -
SQLite3 文件可以有
.sq3扩展名,那么,你需要在正则表达式中添加数字,\.[a-zA-Z0-9]+$