代码之家  ›  专栏  ›  技术社区  ›  sbi

将文件名通配符转换为regex

  •  0
  • sbi  · 技术社区  · 14 年前

    我需要将任意好的DOS通配符字符串转换为regex字符串,然后将其用于 System.Text.RegularExpressions.Regex . 不幸的是,我对雷吉克斯的了解让我很尴尬。

    我想把我的头绕在像这样的东西上 *.* , .* *. . 我现在的问题是 * 通常希望与以点结尾或完全没有点的文件匹配。
    所以我翻译 * 进入之内 ^.+[^\.].*$ 但这显然是错误的。它不仅匹配 blah blah. ,但也 blah.blah .

    那么要匹配的正确regex语法是什么? 瞎说 废话。 ,但不是 废话。 ?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Robb    14 年前

    我想以下几点对你有用

    ^[^.]+\.{0,1}$
    

    从字符串开始匹配任何字符,但。字符串可以以0或1'结尾。

        2
  •  0
  •   Alan Moore Chris Ballance    14 年前

    我似乎无法创建一个名为 末端 有一个点,但我观察到 *. 将匹配一个名称 开始 如果名称中没有其他圆点,则使用圆点。例如,它匹配 .cvspass ,但不是 .antelope.cfg . 它还匹配没有点的名称。雷杰克斯会是 ^\.?[^.]+$ .

    “以……结尾”等同于 ^[^.]+\.?$ 但我认为你不需要。如果你还需要在开始时匹配 结束(但没有其他地方),你可以使用 ^\.?[^.]+\.?$ . 如果这两个条件相互排斥,则使用 ^(?:\.?[^.]+|[^.]+\.)$