【发布时间】:2020-09-06 14:15:41
【问题描述】:
我的英语水平很差,因为我不是以英语为母语的人。 本文如有粗鲁言论,敬请谅解。
我正在使用 .Net Core 的正则表达式库。 我想区分十六进制数和十进制数,所以我编写了一个代码来做到这一点。 但是代码没有被操作,所以我提取了我想要的核心逻辑,并在Test项目上新创建了以下代码。
string identPattern = "(?<rwC>[_a-zA-Z][_a-zA-Z0-9]*)";
string hexaPattern = "(?<iAZ>[0x][0-9]+)";
string decimalPattern = "(?<oKZ>[0-9]+)";
string pattern = string.Format("{0}|{1}|{2}", identPattern, hexaPattern, decimalPattern);
foreach (var data in Regex.Matches("0x10;", pattern, RegexOptions.Multiline | RegexOptions.ExplicitCapture))
{
var matchData = data as Match;
}
如果执行上面的代码“0x10”字符串的“0”匹配。 这意味着 "0x10" 字符串与 decimalPattern ("(?[0-9]+)") 匹配。这不是我想要的结果。 我希望“0x10”字符串与 hexaPattern 匹配。
为什么不匹配hexaPattern?以及如何解决这个问题?
我的测试代码和执行结果如下。
感谢阅读。
【问题讨论】:
-
谢谢链接的文章对我很有用