Tag: regex

使用正则表达式有效地测试“EndsWith”

我需要构建一个Regex(.NET语法)来确定字符串是否以特定值结尾。 具体来说,我需要测试一个文件是否具有特定的扩展名(或一组扩展名)。 我正在尝试修复的代码使用: .*\.(png|jpg|gif)$ 在我的场景中失败的比赛非常缓慢(可能是由于回溯。 简单地删除.* (这很好,因为API仅测试匹配并且不提取任何内容)使得正则表达式更加高效。 它仍然感觉效率非常低。 我错过了一些明显的东西吗? 不幸的是,我没有控制有问题的API所以我需要一个正则表达式来做这个,即使我通常不认为正则表达式是适合这项工作的工具。 我还使用RegexOptions.RightToLeft进行了一些测试,发现我可以使用^.*\.(png|jpg|gif)$从我的测试用例中获得更多性能,但我找不到指定的方法正则表达式本身的字符串中的RightToLeft选项,所以我认为我不能使用它。

那个正则表达式怎么样?

我有一个遵循一些规则的表达式: 角色’必须是第一个和最后一个角色 ”内部可以有零个或多个空格 内部可能有零或多% ” ”内可以有零个或多个单词(字母和数字) 表达: (?i)^(?[‘])[%\p{Zs}\p{L}\p{N}|()]*\k$ 现在我需要另一个表达式来替换所有)和(例如,在一个字符串中用于“TEST”,但仅当它们没有被”包围时。诀窍是当时)或(被”包围但是这些字符属于一对不同的”,它不应该通过。 结果示例: ‘(‘ > pass ‘ ( ‘ > pass ‘)’ > pass ‘ ) ‘ > pass ‘ content here ‘ ‘ )’ > pass ‘ content here’ ) ‘ another content’ > does not pass 请注意,第一个内容有”,第二个内容也有。 任何)或(如果它介于它们之间,则不应通过)。 我不是正则表达式的专业人士,所以如果你不知道它是怎么回事,任何相关的文档或教程都会有很大的帮助。

有没有办法在正则表达式中执行动态替换?

有没有办法在C#4.0中使用匹配中包含的文本函数进行正则表达式替换? 在PHP中有这样的东西: reg_replace(‘hello world yay’,'(?=’)\s(?=’)’, randomfunction(‘$0’)); 并且它为每个匹配提供独立的结果,并在找到每个匹配的地方替换它。

如何在C#中使用Regex检索所选文本?

如何在C#中使用Regex检索所选文本? 我正在寻找与此Perl代码等效的C#代码: $indexVal = 0; if($string =~ /Index: (\d*)/){$indexVal = $1;}

正则表达式删除特殊字符

我们需要一个C#函数,它将从字符串中删除所有特殊字符。 此外,是否可以将“乔治”更改为“乔治”(删除单引号和字符)?

将正则表达式语法扩展为“不包含文本XYZ”

我有一个应用程序,用户可以在许多地方指定正则表达式。 这些在运行应用程序时用于检查文本(例如URL和HTML)是否与正则表达式匹配。 用户通常希望能够说出文本与ABC匹配的位置并且与XYZ不匹配 。 为了方便他们这样做,我想在我的应用程序中扩展正则表达式语法,并说出’ 并且不包含模式 ‘。 有什么建议可以做到这一点吗? 我的应用程序是用C#.NET 3.5编写的。 我的计划(在我得到这个问题的真棒答案之前……) 目前我正在考虑使用¬字符:在¬字符是正常正则表达式之前的任何内容,¬字符之后的任何内容都是在要测试的文本中无法匹配的正则表达式。 所以我可能会使用像这样(人为的)示例的一些正则表达式: on (this|that|these) day(s)?¬(every|all) day(s) ? 例如, 在这一天,男人说…… “但是在这一天和之后的每一天都不会匹配…… ”。 在我处理正则表达式的代码中,我将简单地拆分正则表达式的两个部分并分别处理它们,例如: public bool IsMatchExtended(string textToTest, string extendedRegex) { int notPosition = extendedRegex.IndexOf(‘¬’); // Just a normal regex: if (notPosition==-1) return Regex.IsMatch(textToTest, extendedRegex); // Use a positive (normal) regex and a negative one string […]

正则表达式忽略捕获的中间部分

我想要一个正则表达式,当应用于:“firstsecondthird”将匹配“第三个”(在单个组中,即在C# Match.Value将等于“firstthird”)。 那可能吗? 我们可以忽略后缀或前缀,但中间?

在C#中检查以相同字母开头和结尾的单词

我写的代码只打印那些大于长度为5的单词。现在我要打印以相同字母开头和结尾的单词。 请注意,它应该使用正则表达式库在C#中完成。 用于打印大于5的单词的代码。 String str=”programing world is nooooooot funnnnnnn”; Regex reg=new Regex(“^[a-zA-Z_\\w]\\w*$”); String[] words=str.Split(‘ ‘); for(int i=0;i<words.length;i++) { String temp=words[i]; if(Regex.IsMatch(temp,@"[a-zA-Z]{5}")) Console.Writeline(temp); }

在字符串中查找每个RegEx匹配项

我喜欢做类似的事情 foreach (Match match in regex) { MessageBox.Show(match.ToString()); } 谢谢你的帮助…!

对于C#中的匹配,Regex实例线程是否安全?

我有这个正则表达式,我在Parallel.ForEach 。 安全吗? Regex reg = new Regex(SomeRegexStringWith2Groups); Parallel.ForEach(MyStrings.ToArray(), (str) => { foreach (Match match in reg.Matches(str)) //is this safe? lock (dict) if (!dict.ContainsKey(match.Groups[1].Value)) dict.Add(match.Groups[1].Value, match.Groups[2].Value); });