我需要将任意好的旧DOS通配符字符串转换为正则表达式字符串,然后将其与System.Text.RegularExpressions.Regex
一起使用。不幸的是,我的正则表达式知识非常尴尬。
我正试图围绕像*.*
,.*
和*.
这样的事情。我目前的问题是,*.
通常需要匹配以点结尾或根本没有点的文件。
我将*.
翻译成^.+[^\.].*$
,但这显然是错误的。它不仅匹配blah
和blah.
,还匹配blah.blah
。
那么匹配blah
和blah.
的正确的正则表达式语法是什么,而不是blah.blah
?
答案 0 :(得分:1)
我认为以下内容对您有用
^[^.]+\.{0,1}$
从字符串开头匹配任何字符但是。并且字符串可能以0或1结尾。
答案 1 :(得分:0)
我似乎无法使用点创建名称结束的文件,但我发现glob *.
将匹配启动的名称如果名称中没有其他点,则使用点。例如,它匹配.cvspass
,但不匹配.antelope.cfg
。它也匹配没有点的名称。正则表达式为^\.?[^.]+$
。
与“等同于”的结尾将是^[^.]+\.?$
,但我认为你不需要那样。如果您还需要在开始或结束时匹配(但不在其他地方),则可以使用^\.?[^.]+\.?$
。如果这两个条件是互斥的,请使用^(?:\.?[^.]+|[^.]+\.)$