c# Regex异常-十六进制数字不足

本文关键字:十六进制数字 Regex 异常 | 更新日期: 2023-09-27 18:08:32

我正试图编写一些正则表达式模式代码,将通过使用组取出文本的某些部分。下面是代码:

    private static string ParseSnippet(string ownitDirectory, string project) 
    {
        Match m = Regex.Match("(" + project + "''''.*'''')", ownitDirectory, RegexOptions.IgnoreCase);
        return m.Groups[1].Value;
    }

我遇到的问题是,我正在使用的模式导致异常发生。这个例外对我来说没有任何意义。我已经在许多在线测试者身上测试了这种模式,但这并没有解决问题。

有谁能给我一些建议吗?编辑:

忘记提到例外是"十六进制数字不足"

c# Regex异常-十六进制数字不足

tldr:您很可能得到错误,因为您的输入中有"'x"或"'u",例如目录"c:'xenophobe"或"c:'user…"

根据本页(http://www.regular-expressions.info/quickstart.html), "'x"用于表示Unicode或其他语言集字符。对于Unicode, "'x{FFFF}"或"'uFFFF"都匹配具有给定十六进制索引的Unicode字符。由于x/u之后的文件夹名称与十六进制数字的0-9,a-f模式不匹配,并且您的文件夹被用作正则表达式匹配,因此您会得到一个错误。每当您意外地将字符串用作正则表达式进行比较时,就必然会遇到正则表达式解析问题。

从这个页面来看,Regex.Match的参数似乎是颠倒的。你试过这个吗?

Regex.Match(ownitDirectory, "(" + project + "''''.*'''')", RegexOptions.IgnoreCase);