【发布时间】:2019-02-21 14:00:15
【问题描述】:
我的正则表达式模式远程存储在 XML 文件中。 我想在运行时将它们动态添加到我的应用程序中。
相关代码如下:
//count length of rules
countRules = regexFile.DocumentElement.SelectNodes("/regex/item/rule").Count;
ruleIndex = 0;
//array of pattern objects
pattern = new Regex[countRules];
//allocate regex rules
foreach (XmlNode node in regexFile.DocumentElement.SelectNodes("/regex/item"))
{
string rule = node["rule"].InnerText;
string text = rule;
pattern[ruleIndex] = new Regex(text);
//deny increment after last item
if (ruleIndex < (countRules-1))
{
ruleIndex++;
}
}
XML 文件有这样的条目:
<item>
<rule>\\b[A-ZÄÖÜ]{1}\\d{6}\\b</rule>
</item>
也尝试了引号:
<item>
<rule>"\\b[A-ZÄÖÜ]{1}\\d{6}\\b"</rule>
</item>
在记录和调试之后,我很确定它是以下行:
pattern[ruleIndex] = new Regex(text);
当我做静态变体时,它会起作用:
pattern[ruleIndex] = new Regex("\\b[A-ZÄÖÜ]{1}\\d{6}\\b");
我是否为 new Regex("") 设置了错误的参数?它应该有引号?
【问题讨论】:
-
有什么问题?
-
将 XML 值插入新的 Regex(text) 不起作用。
-
\\ 在字符串中是escape sequence。将
\b[A-ZÄÖÜ]{1}\d{6}\b放入您的 xaml -
天哪,双反斜杠确实是个错误,非常感谢 Christian。如果您愿意,可以将此作为答案。
-
以前没有带一个反斜杠的版本吗?