我需要一个C#程序中的正则表达式。正则表达方式不区分大小写?
我必须捕捉具有特定结构的文件的名称。
我用\ w char类,但问题是这个类不匹配任何重音字符。
那么该怎么做?我只是不想将最常用的重音字母放在我的模式中,因为我们理论上可以在每个字母上加上每个口音。
所以我虽然也许有一种语法,说我们想要一个不区分大小写的类(或者一个需要考虑口音的类),或者一个“正则表达式”选项,它允许我不区分大小写。
你知道这样的事吗?
非常感谢您
我需要一个C#程序中的正则表达式。正则表达方式不区分大小写?
我必须捕捉具有特定结构的文件的名称。
我用\ w char类,但问题是这个类不匹配任何重音字符。
那么该怎么做?我只是不想将最常用的重音字母放在我的模式中,因为我们理论上可以在每个字母上加上每个口音。
所以我虽然也许有一种语法,说我们想要一个不区分大小写的类(或者一个需要考虑口音的类),或者一个“正则表达式”选项,它允许我不区分大小写。
你知道这样的事吗?
非常感谢您
案例insensite工作对我来说在这个例子:
string input [email protected]"âãäåæçèéêëìíîïðñòóôõøùúûüýþÿı";
string pattern = @"\w+";
MatchCollection matches = Regex.Matches (input, pattern, RegexOptions.IgnoreCase);
它匹配整个字符串。 –
是的,我很抱歉,我使用了RegexOptions.CultureInvariant,因为我需要它是区分大小写的:) – J4N
不要拍我失望了,但如果你只是想匹配文件名,那么为什么不走另一条路,并使用排除的字符?
[^<>:"/\|?*]
试试这个:
String pattern = @"[\p{L}\w]+";
你有没有尝试。它应该:匹配除换行符之外的任何单个字符。 \ w:匹配包含下划线的任何单词字符。相当于“[A-Za-z0-9_]”。 所以排除重音字母是有意义的。
http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet
你自相矛盾。我的意思是你说:'\ w'匹配任何字,相当于'[A-Za-z0-9_]' –
你可以试试这个,看看它的工作原理:
[\u00E9-\u00F8\w]
使用此\p{L}
代替的类\w
\p{L}
是一个类别为“letter”的unicode代码点。所以它包括例如“äöüéè”等。
您也可以使用它自己的性格类,如果你想例如包括空间或点这样[\p{L} .]
更新:
OK,我在.net中认识到,\w
也包括Unicode字母,而不仅仅是ASCII字母。
所以我不确定你在问什么。如果你想允许看起来像一个字母,但不是,那么我认为你最终会使用\S
(不是空格)。
也许这有助于你展示一些例子。
您可以简单地用字母(近似)等价替换变音符号,然后使用您当前的正则表达式。
见例如:
How do I remove diacritics (accents) from a string in .NET?
static string RemoveDiacritics(string input)
{
string normalized = input.Normalize(NormalizationForm.FormD);
var builder = new StringBuilder();
foreach (char ch in normalized)
{
if (CharUnicodeInfo.GetUnicodeCategory(ch) != UnicodeCategory.NonSpacingMark)
{
builder.Append(ch);
}
}
return builder.ToString().Normalize(NormalizationForm.FormC);
}
string s1 = "Renato Núñez David DeJesús Edwin Encarnación";
string s2 = RemoveDiacritics(s1);
// s2 = "Renato Nunez David DeJesus Edwin Encarnacion"
事实上,我犯了一个错误,正则表达式并没有考虑我的重音词,但它并不是因为口音,但由于“ - ”。我很抱歉我让你失散的时候。 “\ w”确实有效 – J4N
提供非匹配重音字符 –
你有没有尝试。它应该:匹配除换行符之外的任何单个字符 – MrFox
您能向我们展示您在代码*中尝试过的*吗? –