Tag: 正则表达式

CamelCase转换为友好名称,即Enum常量; 问题?

在我对这个问题的回答中 ,我提到我们使用UpperCamelCase解析来获取未使用Description属性修饰的枚举常量的描述,但它很幼稚,并且在所有情况下都不起作用。 我重温了它,这就是我想出的: var result = Regex.Replace(camelCasedString, @”(?(?<!^)[AZ][az])", @" ${a}"); result = Regex.Replace(result, @"(?[az])(?[A-Z0-9])”, @”${a} ${b}”); 第一个替换查找大写字母,后跟小写字母,EXCEPT,其中大写字母是字符串的开头(以避免必须返回和修剪),并添加前面的空格。 它处理您的基本UpperCamelCase标识符,并领导像FDICInsured这样的全高级缩写词。 第二个替换查找小写字母后跟一个大写字母或数字,并在两者之间插入一个空格。 这是为了处理特殊但常见的中间或尾随首字母缩略词或标识符中的数字(除了前导数字,通常在C风格的语言中都是禁止的)。 运行一些基本的unit testing,这两个组合正确地分离了以下所有标识符:NoDescription,HasLotsOfWords,AAANoDescription,ThisHasTheAcronymABCInTheMiddle,MyTrailingAcronymID,TheNumber3,IDo3Things,IAmAValueWithSingleLetterWords和Basic(没有添加任何空格)。 因此,我首先发布此信息,与其他可能认为有用的人分享,然后再问两个问题: 任何人都会看到一个符合常见的CamelCase-ish约定的案例,这种方式不能正确地分成友好的字符串吗? 我知道它不会将相邻的首字母缩略词(FDICFCUAInsured)分开,重新调整“正确”的像CamedCased类似的首字母缩略词,或大写一个lowerCamelCased标识符的第一个字母(但那个很容易添加 – result = Regex.Replace(result, “^[az]”, m=>m.ToString().ToUpper()); )。 还要别的吗? 任何人都可以看到一种方式来做出这样的陈述,或者更优雅吗? 我正在寻找组合替换调用,但由于他们对匹配执行两个不同的事情,因此无法使用这两个字符串完成。 它们可以组合成一个方法链,在String上使用RegexReplace扩展方法,但任何人都可以想到更好吗?

正则表达式在Windows Server 2008上变慢

我的情况是我的正则表达式在Windows Server 2008上编译得非常慢。我写了一个小型控制台应用程序来突出显示这个问题。 该应用程序生成自己的输入,并从XML文件中的单词构建一个正则表达式。 我构建了这个应用程序的发布版本,并在我的个人笔记本电脑(运行XP)和Windows 2008服务器上运行它。 正则表达式在我的笔记本电脑上编译需要0.21秒,但在服务器上编译需要23秒。 可能导致这种情况的任何想法? 问题只出现在首次使用正则表达式时(首次编译时 – 此后它很好) 我还发现了另一个问题 – 当在同一个Windows 2008服务器上的正则表达式中使用\s+时,内存气球(使用4GB +)并且Regex的编译永远不会完成。 Regex和64位.net是否存在已知问题? 是否有针对此的修复/补丁? 我无法在网上找到任何信息,但我在Framework 2.0中找到了一些关于同样问题的文章 – 这肯定已经解决了吗? 更多信息:服务器运行64位版本的.net框架(3.5 SP1),在我的笔记本电脑上安装了Visual Studio 2008和3.5框架。 正则表达式具有以下模式: ^word$|^word$|^word$和使用以下标志构造: RegexOptions.IgnoreCase | RegexOptions.Compiled RegexOptions.IgnoreCase | RegexOptions.Compiled 这是一段代码: StringBuilder regexString = new StringBuilder(); if (!String.IsNullOrEmpty(fileLocation)) { XmlTextReader textReader = new XmlTextReader(fileLocation); textReader.Read(); while (textReader.Read()) { textReader.MoveToElement(); if (textReader.Name […]

将Pascal-case字符串拆分为逻辑单词集

我想把一个像“CountOfWidgets”这样的pascal-cased字符串转换成更友好的东西,如C#中的“Widgets计数”。 多个相邻的大写字符应保持不变。 最有效的方法是什么? 注意 :重复的.NET – 如何将“大写”分隔的字符串拆分为数组?

简单的正则表达式替换以保持原始字符串

我有这个: Title = Regex.Replace(Title, s, “” + s + “”, RegexOptions.IgnoreCase); s是像facebook这样的词。 如果标题是: How to make a Facebook game 我想换成: How to make a Facebook game 即使搜索词是’facebook’(注意大写)。 基本上,我如何保留单词的原始大小写? 另一个例子,搜索词FACEBOOK ,字符串Hello FaCeBoOk转为Hello FaCeBoOk

使用C#Regex的多个正则表达式选项

假设我有这个: Regex.Replace(“aa cc bbbb”,”aa cc”,””,RegexOptions.IgnoreCase); 但我也需要忽略空格。 所以,我找到了一个选项IgnorePatternWhitespace ,但是如何在一个regex.Replace中添加几个选项呢? 就像是: Regex.Replace(“aa cc bbbb”, “aa cc”, “”, RegexOptions.IgnoreCase + RegexOptions.IgnorePatterWhitespace); 更新: 感谢您的回答,但此选项似乎不起作用:这是一个测试示例: Regex.Replace(“aa cc bbbb”, “aacc”, “”, RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);

名称标记" >

需要使用正则表达式从字符串中删除名称标记

需要使用正则表达式从以下urlName删除a标记,以仅输出字符串”Name” 。 我正在使用C#.net。 任何帮助表示赞赏

如何使用正则表达式检查特殊字符

净。 我创建了一个正则表达式validation器来检查特殊字符意味着我不想要用户名中的任何特殊字符。 以下是代码 Regex objAlphaPattern = new Regex(@”[a-zA-Z0-9_@.-]”); bool sts = objAlphaPattern.IsMatch(username); 如果我提供用户名为$%^& asghf,那么validation器提供的数据格式无效,这是我想要的结果但是如果我提供数据s23 _ @ .- ^& ()%^ $#那么我的validation器应该阻止数据但是我的validation器允许错误的数据 那么如何不允许任何特殊字符,除了az AA 0-9 _ @ .- 谢谢Sunil Kumar Sahoo

C#和JavaScript正则表达式之间的区别?

C#和JavaScript正则表达式有什么不同? 有这些差异的清单吗?

正则表达式获取href中的链接。

嗨我有问题让我的正则表达式工作。 我正在使用C#asp.net我将发布我现在使用的代码和我无法工作的第二个正则表达式获取href =“LINK”中的任何内容 提前thx var textBody = “lorem ipsum… link”; var urlTagPattern = new Regex(@”<a.*?href=[""'](?.*?)[“”‘].*?>(?.*?)”, RegexOptions.IgnoreCase); //THIS IS THE REGEX var hrefPattern = new Regex(@”HREF={:q}\>”, RegexOptions.IgnoreCase); var urls = urlTagPattern.Matches(textBody); foreach (Match url in urls) { var hrefs = hrefPattern.Match(url.ToString()); litStatus.Text = hrefs.ToString(); }

正则表达式匹配两个或多个连续字符

使用正则表达式我想匹配一个单词 以一封信开头 有英文alpahbets 数字,句点(。),连字符( – ),下划线(_) 不应该有两个或多个连续的句号或连字符或下划线 可以有多个句点或连字符或下划线 例如, flin..stones或flin__stones或flin – stones 不允许。 fl_i_stones或fli_st.ones或flin.stones或flinstones 被允许 。 到目前为止我的正则表达式是^ [a-zA-Z] [a-zA-Z \ d ._-] + $ 所以我的问题是如何使用正则表达式来做到这一点