Tag: 正则表达式

C#正则表达式电话号码检查

我有以下内容来检查电话号码是否采用以下格式(XXX)XXX-XXXX。 以下代码始终返回true。 不知道为什么。 Match match = Regex.Match(input, @”((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}”); // Below code always return true if (match.Success) { ….}

除了“www”之外的任何字符串的正则表达式? (子域)

我想知道是否有人可以帮助我使用C#中的正则表达式。 我认为这很简单,但我一直在嘲笑它,不太清楚为什么我会遇到这么困难。 🙂 我已经找到了几个例子,但我似乎无法操纵它们去做我需要的东西。 我只需要匹配任何不是“www”的字母数字+破折号子域名字符串,并且只需要匹配“。” 另外,理想情况下,如果有人输入“www.subdomain.domain.com”,我希望尽可能忽略www。 如果没有,这不是一个大问题。 换句话说,我想匹配: (测试) .domain.com (test2) .domain.com (wwwasdf).domain.com (asdfwww).domain.com (w) .domain.com (wwwwww).domain.com (asfd-12345-www-bananas) .domain.com 万维网。 (子域名) .domain.com 我不想匹配: (www) .domain.com 在我看来它应该很容易,但我遇到了“不匹配”部分的麻烦。 对于它的价值,这是在IIS 7 URL重写模块中使用,以重写所有非www子域。 谢谢!

如何超越这个正则表达式替换?

经过大量测量后,我发现了一个我想要优化的Windows服务中的热点。 我们正在处理可能有多个连续空格的字符串,我们希望减少到只有一个空格。 我们使用静态编译的正则表达式来完成这项任务: private static readonly Regex regex_select_all_multiple_whitespace_chars = new Regex(@”\s+”,RegexOptions.Compiled); 然后按如下方式使用它: var cleanString= regex_select_all_multiple_whitespace_chars.Replace(dirtyString.Trim(), ” “); 这条线被调用了数百万次,并且certificate是相当密集的。 我试着写一些更好的东西,但我很难过。 鉴于正则表达式的处理要求相当适中,肯定会有更快的速度。 使用指针进行unsafe处理可以进一步加快速度吗? 编辑: 感谢对这个问题的惊人反应……最让人意想不到的!

是否可以检查缓存的正则表达式的数量?

Regex.CacheSize属性获取或设置已编译正则表达式的当前静态高速缓存中的最大条目数。 Regex类维护>静态方法调用中使用的已编译正则表达式的内部缓存。 如果set操作中指定的值小于当前>高速缓存大小,则会丢弃高速缓存条目,直到高速缓存大小等于指定的>值。 默认情况下,缓存包含15个编译的静态正则表达式。 您的应用程序>通常不必修改缓存的大小。 如果要关闭缓存或具有exception大的缓存,请仅使用CacheSize属性。 所以我想深入了解缓存中当前的表达式数量。 任何人都知道这是否可行? 想法是我现在重复使用其中的15个,所以不想使用CacheSize ,但是希望能够在某个时刻检查实际的缓存使用情况,如果我达到最大值则记录(因为正则表达式用法扩展) )或动态调整CacheSize 。 或者,任何关于简单地将CacheSize增加到某个任意大数的开销的评论?

无效的正则表达式模式

我在c#中有一段代码来检查值是否是有效的正则表达式模式。 代码很简单: try { System.Text.RegularExpressions.Regex.IsMatch(“”, pattern); } catch (Exception) { return “pattern matches must be a valid regex value”; } 我试图测试它是否正常工作,但我找不到无效的正则表达式模式..呵呵 有什么建议?

为什么我的正则表达式编译得比解释慢得多?

我有一个庞大而复杂的C#正则表达式,在解释时运行正常,但有点慢。 我试图通过设置RegexOptions.Compiled来加快速度,这似乎是第一次约30秒,之后立即。 我试图通过首先将正则表达式编译为程序集来否定这一点,因此我的应用程序可以尽可能快。 我的问题是编译延迟发生时,是否在应用程序中编译: Regex myComplexRegex = new Regex(regexText, RegexOptions.Compiled); MatchCollection matches = myComplexRegex.Matches(searchText); foreach (Match match in matches) // <— when the one-time long delay kicks in { } 或提前使用Regex.CompileToAssembly: MatchCollection matches = new CompiledAssembly.ComplexRegex().Matches(searchText); foreach (Match match in matches) // <— when the one-time long delay kicks in { } 这使得编译程序基本没用,因为我仍然会在第一次foreach调用时遇到延迟。 我想要的是所有的编译延迟都是在编译时完成的(在Regex.CompileToAssembly调用中),而不是在运行时。 我哪里错了? […]

如何在任意序列中搜索模式?

正则表达式仅限于字符串,但如果该function不仅可以扩展到字符而且可以扩展到对象甚至更多function呢? 假设我们的对象是整数,它们可以是任何顺序: 1 2 3 4 5 6 7 8 9 10 11 12 13 你要解决的任务是找到素数对 (或类似的模式搜索任务),如下所示: {prime}{anyNumber}{prime} 所以答案是这样的: (3,4,5) (5,6,7) (11,12,13) 或者是素数链的一个更复杂的例子: {prime}({anyNumber}{prime})+ 回答: (3,(4,5),(6,7)) (11,(12,13)) 非常像正则表达式的工作,对吧? 会发生的是你定义了一个名为isPrime(x)的函数,并在需要检查下一个输入元素是否为实数素数时使用它(因此它与对象或对象空间有某种相等性) 到目前为止我创造了什么 我在C#中创建了类似于Regex类的ObjectRegex类。 它接受上面的模式并执行与之相关的谓词来识别对象。 它工作得非常好,但问题是它可以工作任何类型的TValue序列应该转换为字符串才能传递给Regex模式,为此我应该将ALL谓词应用于整个序列。 O(n * m)毕竟是一个坏主意…. 我决定以艰难的方式解决它….并尝试inheritance字符串,这是密封的,inheritance被禁止。 从这个inheritance的类中需要的是覆盖访问器 char this[int index] {get;} 为了延迟执行谓词的好处,它实际上是有意义的。 那么,任何想法如何制作它? 我喜欢.NET Regex和它的语法,有没有办法绕过这个字符串诅咒和欺骗引擎? 反思可能还是一些我不知道的铁杆? 更新1 我发现这篇文章http://www.codeproject.com/Articles/463508/NET-CLR-Injection-Modify-IL-Code-during-Run-time并认为可以通过替换这个[int index]方法来完成通过我的代码,但我认为它会破坏其他一切,因为你只能替换一个实例的方法。

是否有正则表达式永远不会匹配任何字符串?

分为两部分问题: 是否有任何理论正则表达式永远不会匹配任何字符串(使用一般语法而没有现代正则表达式匹配器提供的任何花哨的东西)? 有没有一种简单的方法来使用C#的正则表达式语法来创建一个永远不会匹配任何字符串的正则表达式(这次,包括所有奇特的东西)? 注意:我不是指匹配空字符串(这很容易,只是”” )。

使用正则表达式修剪html

一直试图解决这个问题。 我需要一个正则表达式去除下面示例中演示的html标记之间的换行符,制表符和空格: 资源: Some title 通缉结果: Some title 在“一些标题”之前修剪空白是可选的。 我会感激任何帮助

C使用正则表达式搜索Sharp文件夹

从顶级目录获取与某个正则表达式匹配的文件夹列表的最有效方法是什么? 我目前只是递归迭代子文件夹以查看它们是否与正则表达式匹配,如果它们匹配,我将使用目录路径获取文件名。 目前,由于此目录中的文件夹数量,此搜索大约需要50分钟才能使用当前方法。 private void ProcessFiles(string path, string searchPattern) { string pattern = @”^(\\\\server\\folder1\\subfolder\\(MENS|WOMENS|MENS\sDROPBOX|WOMENS\sDROPBOX)\\((((COLOR\sCHIPS)|(ALL\sMENS\sCOLORS)))|((\d{4})\\(\w+)\\(FINAL\sART|FINAL\sARTWORK)\\(\d{3}))))$”; DirectoryInfo di = new DirectoryInfo(path); try { Debug.WriteLine(“I’m in ” + di.FullName); if (di.Exists) { DirectoryInfo[] dirs = di.GetDirectories(“*”, SearchOption.TopDirectoryOnly); foreach (DirectoryInfo d in dirs) { string[] splitPath = d.FullName.Split(‘\\’); var dirMatch = new Regex(pattern, RegexOptions.IgnoreCase); if (dirMatch.IsMatch(d.FullName)) { Debug.WriteLine(“—Processing Directory: […]