我需要用\ w捕获一些文本,但是这个文本可以包含德语Umlaute(ÜÄÖ),这会导致我的正则表达式失败。如何扩展正则表达式以匹配这些情况?
正则表达式:
Regex PFileRegex = new Regex("printfile ps *\\t*= *\\t*\"[\\w\\s]*.ps\\s*\"", RegexOptions.IgnoreCase);
Match PFilematch = PFileRegex.Match("printfile ps = EXAMPLE Ä.ps"); //false
Match PFilematch = PFileRegex.Match("printfile ps = EXAMPLE.ps"); //true
我知道我可以简单地将ÖÖÄ添加到[\ w \ s] *中,但这不是真正可扩展的。
答案 0 :(得分:1)
在.NET中,默认情况下\w
将匹配带重音的字母(reference)。看起来你在其他地方犯了一个错误,但由于你的问题中的代码在语法上没有效果,我不知道在哪里。
这是我刚刚清理过的相同代码,它应该可以工作:
var fileRegex = new Regex(@"printfile ps\s*=\s*""[\w\s]*\.ps\s*""", RegexOptions.IgnoreCase);
var fileMatch1 = fileRegex.Match("printfile ps = \"EXAMPLE Ä.ps\"");
var fileMatch2 = fileRegex.Match("printfile ps = \"EXAMPLE.ps\"");
未转义的正则表达式为printfile ps\s*=\s*"[\w\s]*\.ps\s*"
。