Tag: regex

正则表达式跳过模式

问题 我需要用百分号(’%’)替换所有星号(’*’)。 应忽略方括号中的星号符号。 例 [Test] public void Replace_all_asterisks_outside_the_square_brackets() { var input = “Hel[*o], w*rld!”; var output = Regex.Replace(input, “What_pattern_should_be_there?”, “%”) Assert.AreEqual(“Hel[*o], w%rld!”, output)); }

在C#中使用Regex在ConcatenatedFileNamesLikeThis之间插入空格?

我们正在尝试从SSRS报告文件名生成用户友好的报告名称,这些名称不能在名称中包含空格,但应该可以使用正则表达式从报告名称生成它们以扫描大写/ nocaps边界和alpha /数字边界。 然而,所有上限都使事情复杂化。 例如: ListOfMembers => List Of Members Weekly123Report => Weekly 123 Report MembersOfIEETeam => Members Of IEE Team 所以我认为这是最小的规则集; (a-z0-9)(AZ) gets replaced with “$1 $2” (AZ)?(AZ)(az) gets replaced with “$1$2 $3” (A-Za-z)(0-9) gets replaced with “$1 $2” (0-9)(A-Za-z) gets replaced with “$1 $2” 有可能一下子做到这一点还是需要多次通过? 假设我们有一个报告文件名,例如: WeeklyIEEReportWC20090103SortedByDate 我已经看到SSRS在处理图表上的系列名称时执行类似的操作,它会从连接版本中动态生成它们。 任何信息赞赏! 🙂

从字符串的源列表动态生成最短正则表达式

我有一堆SKU(库存单位)代表一系列字符串,我想创建一个匹配的正则表达式。 所以,例如,如果我有SKU: var skus = new[] { “BATPAG003”, “BATTWLP03”, “BATTWLP04”, “BATTWSP04”, “SPIFATB01″ }; …我想自动生成正则表达式以识别任何一个SKU。 我知道我只能做”BATPAG003|BATTWLP03|BATTWLP04|BATTWSP04|SPIFATB01″ ,但SKU列表可能非常冗长,我想将生成的正则表达式压缩为”BAT(PAG003|TW(LP0(3|4)|SP04))|SPIFATB01” 所以这是一个组合运动。 我想生成所有可能的Regex以匹配我的任何输入字符串,并认为最短可能是最好的。 例如,我可以生产以下任何一种: BATPAG003|BATTWLP03|BATTWLP04|BATTWSP04|SPIFATB01 BAT(PAG003|TW(LP0(3|4)|SP04))|SPIFATB01 BAT(PAG003|TW(LP(03|04)|SP04))|SPIFATB01 B(ATPAG003|ATTW(LP0(3|4)|ATSP04))|SPIFATB01 任何这些都可行,但最短的可能就是我选择的那个。 首先,我尝试实现此function: Func<IEnumerable, IEnumerable> regexify = null; regexify = xs => from n in Enumerable.Range(1, 10) let g = xs.ToArray().Where(s => !String.IsNullOrWhiteSpace(s)).GroupBy(x => new String(x.Take(n).ToArray()), x => new String(x.Skip(n).ToArray())) let parts = […]

英国邮政编码正则表达

我希望能够validation英国邮政编码,理想情况下,我希望通过以下案例: W1 W12 WC1 WC1A WC12 W1 6BT W12 6BT WC1 6BT WC1A 6BT WC12 6BT W16BT W126BT WC16BT WC1A6BT WC126BT 我有以下正则表达式模式: ^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9])( [0-9][ABD-HJLNP-UW-Z]{2})?)$ 此模式允许使用3或4和6或7位数的邮政编码(因此,只有3或4位数的外向代码,或6或7位数的完整邮政编码),但它不允许使用第4和第6点(空格包含的邮政编码)被省略了) 我也有这种模式: ^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKPS-UW]) {0,1}[0-9][ABD-HJLNP-UW-Z]{2})$ 这种模式允许6或7位数的邮政编码,我们没有空格,但不适用于不完整的邮政编码(仅限外向代码) 很抱歉在这里已经提到了一个已经广泛涵盖的问题,但是我发现的所有例子都符合我的要求,但不是全部。 理想情况下,我想要一个正则表达式模式,允许3个,4个,6个和7个数字的邮政编码,我们没有空格。 更新: 我已经完成了我的通过案件,因为我认为它最初并不完全全面。 其基本概念应遵循英国邮政编码模式,并validation以下任何组合: 1 Letter 1 Number 1 Letter 2 Numbers 2 Letters 1 Number 2 Letters 1 Number 1 Letter 2 […]

版本号的正则表达式

我想得到这样的比赛: 3.1.0 10.5.1 0.5 这可能代表构建版本编号系统。 非比赛: 3.1. 我试过这个正则表达式: [0-9]+\.[0-9]+ 这只得到0.5而不是10.5.1 。

检测* all * emojis

现在我正在使用这段代码: public static bool ContainsEmoji(this string text) { Regex rgx = new Regex(@”\p{Cs}”); return rgx.IsMatch(text); } 它有点帮助。 他们中的大多数似乎被发现,但有些则没有。 以下是帮助的参考列表: http : //unicode.org/emoji/charts/full-emoji-list.html 所有的笑脸看起来都很好,但这些特定的表情符号并没有被正则表达式所抓住: 1920 U +2614☔雨伞下雨 1921年U +26F1⛱伞在地上 1922年U +26A1⚡高压 1923年U + 2744❄雪花 在键盘上这些并不是彼此接近的,但是在列表中它们是相互跟随的,所以我只是假设有一个点它将开始不在表情符号列表中工作,并且它并没有真正validation。 从1905年(天气般的表情符号),下降,一些被捕获在正则表达式,一些不是。 似乎没有任何规则。 我不能只是去完整的ASCII,因为我需要人们输入像西里尔字母这样的字符,但我不能特别接受表情符号。 我不知道如何从这里前进。 我阅读了关于代理高/低对的MSDN文档 ,但在这个阶段这对我来说非常困惑,我认为一些正确的方向推进将会有很长的路要走。 非常感谢您的宝贵时间 :)

将这两个正则表达式合二为一

我在C#中有以下内容: public static bool IsAlphaAndNumeric(string s) { return Regex.IsMatch(s, @”[a-zA-Z]+”) && Regex.IsMatch(s, @”\d+”); } 我想检查参数s包含至少一个字母字符和一个数字,我写了上面的方法来执行此操作。 但是有没有办法将两个正则表达式( “[a-zA-Z]+”和”\d+” )组合成一个?

RegEx匹配M / YYYY,MM / YYYY,M / YY或MM / YY格式

需要帮助查找或使RegEx与MM / YY或MM / YYYY格式匹配。 我的RegExFu很弱,我甚至不确定从哪里开始写这个。 月份应为1-12岁,2009年以后的任何内容都应该有效。 很抱歉之前没有提及更多细节。 这用作到期日期。 我会为超出的人添加赏金,并validation> =今天的MM / YY或MM / YYYY格式。 让过期的东西超过第一个validation层是没有意义的。 我感觉很糟糕,因为我改变了我的要求,并且必须更具体地说明我需要的问题,所以我会奖励所有那些在无价值窗口到期后回答的人。

C#Linq .ToDictionary()密钥已经存在

最终编辑:我能够找到ini文件中的重复字段。 谢谢大家的帮助! 我正在使用正则表达式来解析ini文件,使用LINQ将其存储在Dictionary中: 样本数据: [WindowSettings] 窗口X Pos =’0′ 窗口Y Pos =’0′ Window Maximized =’false’ 窗口名称=’Jabberwocky’ [记录] 目录=’C:\ Rosetta Stone \ Logs’ 编辑:这是实际导致问题的文件: http : //pastebin.com/mQSrkrcP EDIT2:我把它缩小到由文件的最后一部分引起:[list_first_nonprintable] 由于某种原因,我正在解析的文件之一是抛出此exception: System.ArgumentException:已添加具有相同键的项。 有没有办法让我找出导致问题的键(所以我可以修复文件),或者只是跳过导致这个问题的键并继续解析? 这是代码: try { // Read content of ini file. string data = System.IO.File.ReadAllText(project); // Create regular expression to parse ini file. string pattern = @”^((?:\[)(?[^\]]*)(?:\])(?:[\r\n]{0,}|\Z))((?!\[)(?[^=]*?)(?:=)(?[^\r\n]*)(?:[\r\n]{0,4}))*”; //pattern […]

C#Email Regular Expression – 符合RFC 2822指南的任何内容吗?

我意识到有大量的正则表达式电子邮件validation,但我似乎找不到符合RFC 2822标准的电子邮件validation。 我找到的那些继续让垃圾像… @ abc.com通过。 如果其中一个问题的答案已经符合RFC 2822(但没有注释,那么请原谅),请原谅我。