Tag: regex

检查字符串是否是hex数的有效重复

我是关于regex总noob。 我的目标是检查一个字符串是否是hex数字的有效重复。 目前我的实现(我发现它实际上效率不高)是一个包含所有HEX数字(0,1,… 9,A,B..F)的List,并检查我的字符串是否包含未包含在给定List中的字符。 我打赌这可以使用正则表达式轻松完成,但我不知道如何实现它。 private bool ISValidHEX(string s) { List ToCheck = new List(); for (int i = 0; i < 10; i++) { ToCheck.Add(i.ToString()); } ToCheck.Add("A"); ToCheck.Add("B"); ToCheck.Add("C"); ToCheck.Add("D"); ToCheck.Add("E"); ToCheck.Add("F"); for (int i = 0; i < s.Length; i++) { if( !ToCheck.Contains(s.Substring(i,1))) { return false; } } return true; }

任意分隔符/转义字符处理的最佳算法是什么?

我有点惊讶的是网上没有关于此的信息,我一直发现这个问题比我想象的要有点棘手。 这是规则: 您将从分隔/转义数据开始拆分为数组。 分隔符是一个任意字符 转义字符是一个任意字符 分隔符和转义字符都可能出现在数据中 正则表达式很好,但性能最好的解决方案是最好的 编辑:可以忽略空元素(包括前导或结尾分隔符) 代码签名(基本上是C#) public static string[] smartSplit( string delimitedData, char delimiter, char escape) {} 问题中最棘手的部分是转义的连续转义字符大小写,当然,因为(调用/转义字符和分隔符):////////,= ////, 我错过了某个地方,这是在网上还是在另一个SO问题上处理的? 如果没有,那就把你的大脑投入工作……我认为这个问题对于公益事业来说是件好事。 我自己正在研究它,但还没有一个好的解决方案。

Uri.IsWellFormedUriString需要更新吗?

我想我可能在Uri.IsWellFormedUriString方法中发现了一个错误,可能是因为它只符合RFC 2396和RFC 2732标准,而不是新的RFC 3986 ,这使得前面提到的两个过时了。 我认为发生的是任何非us-ascii字符都会导致失败,因此其中包含æ,ø,ö或å等字符的url会使其返回false。 由于现在允许这些字符( 维基百科等人使用它们),我认为Uri.IsWellFormedUriString应该接受它们。 下面的正则表达式取自RFC 3986。 你怎么看? Uri课程应该更新吗? 无论如何这里是一些显示错误的示例代码: static void Main(string[] args) { var urls = new [] { @”/aaa/bbb/cccd”, @”/aaa/bbb/cccæ”, @”/aaa/bbb/cccø”, @”/aaa/bbb/cccå” }; var regex = new Regex(@”^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?”); Debug.WriteLine(“”); foreach (var url in urls) { if (Uri.IsWellFormedUriString(url, UriKind.Relative)) Debug.WriteLine(url + ” is a wellformed Uri”); if (regex.IsMatch(url)) Debug.WriteLine(url + […]

C#Regex性能非常慢

我是正则表达式主题的新手。 我想用以下正则表达式解析日志文件: (?(.*?))[|](?(.*?))[|](?(.*?))[|](?[1-3])[|](?(.*?))[|][|][|](?(.*?))[|][|](?(.*?))[|](?(.*)) 日志行如下所示: 2001.07.13 09:40:20|1|SomeSection|3|====== Some log message::Type: test=sdfsdf|||.\SomeFile.cpp||60|-1 带appr的日志文件 3000行需要很长时间来解析它。 你有一些提示来加快表现吗? 谢谢… 更新:我使用正则表达式,因为我使用不同的日志文件,不具有相同的结构,我使用它: string[] fileContent = File.ReadAllLines(filePath); Regex pattern = new Regex(LogFormat.GetLineRegex(logFileFormat)); foreach (var line in fileContent) { // Split log line Match match = pattern.Match(line); string logDate = match.Groups[“time”].Value.Trim(); string logLevel = match.Groups[“level”].Value.Trim(); // And so on… } 解: 谢谢你的帮助。 我用以下结果测试了它: 1.)只添加了RegexOptions.Compiled: […]

C#正则表达式,不包括字符串

我有一个字符串的集合,我想要的正则表达式是收集所有开始与http .. HREF = “http://www.test.com/cat/1-one_piece_episodes/的” href = “http://www.test.com/cat/2-movies_english_subbed/” HREF =“HTTP://www.test的.com /猫/ 3-english_dubbed / “HREF =” http://www.exclude.com” 这是我的正则表达式模式.. href=”(.*?)[^#]” 并返回此 href=”http://www.test.com/cat/1-one_piece_episodes/” href=”http://www.test.com/cat/2-movies_english_subbed/” href=”http://www.xxxx.com/cat/3-english_dubbed/” href=”http://www.exclude.com” 什么是排除最后一场比赛的模式..或排除内部具有排除域的匹配,如href =“http://www.exclude.com” 编辑:多次排除 href=”((?:(?!”|\bexclude\b|\bxxxx\b).)*)[^#]”

正则表达式匹配方括号内的括号内的数字和可选文本

首先,我在C#这里,这就是我正在处理的RegEx的味道。 以下是我需要能够匹配的东西: [(1)] 要么 [(34) Some Text – Some Other Text] 所以基本上我需要知道括号之间的数字是否为数字,并忽略右括号和近方括号之间的所有内容。 任何RegEx大师都在关心帮忙吗?

2个字符串之间的文本的正则表达式模式

我试图在以下模式中提取所有文本(显示为xxxx): Session[“xxxx”] 使用c# 这可能是Request.Querystring[“xxxx”]所以我试图动态构建表达式。 当我这样做,我得到各种关于未转义的字符或没有匹配的问题:( 一个例子可能是: string patternstart = “Session[“; string patternend = “]”; string regexexpr = @”\\” + patternstart + @”(.*?)\\” + patternend ; string sText = “Text to be searched containing Session[\”xxxx\”] the result would be xxxx”; MatchCollection matches = Regex.Matches(sText, @regexexpr); 我可以帮助解决这个问题(因为我似乎总是使用RegEx :))

匹配“{{”和“}}”所包围的文字

我正在寻找可以做到这一点的正则表达式:我的文字: “Blablabla {{ blabla1 }} blablablabla {{ blablabla2 {{ blabla3 }} }} blablabla” 我要提取的内容: “blabla1” and “blablabla2 {{ blabla3 }}” 有没有人有想法? 我试过: “{{(.)*}}”但它返回”blabla1″和”blabla3”

正则表达式 – 仅匹配一定长度或更短的通配符

有没有办法让Regex语句搜索最大长度的通配符? 例如: somestuff.*morestuff 如果我想要上面的匹配 somestuffblahmorestuff 但不是 somestuffblahblahmorestuff 这可能吗?

正式表达印度手机号码?

我正在寻找一个符合以下要求的正则表达式: 仅包含10位数字(仅限数字) 从9开始。 这些示例应匹配: 9999999999 9876543210 这些示例不匹配: 999999999 1234567890 8912456789 qwe3456&ERT 这主要是针对印度手机号码。 请提供示例,我已经搜索过Google,这些答案提供了过度validation。