Tag: regex

查找包含给定字符串的所有行

System.IO.StreamReader file = new System.IO.StreamReader(@”data.txt”); List Spec= new List(); while (file.EndOfStream != true) { string s = file.ReadLine(); Match m = Regex.Match(s, “Spec\\s”); if (m.Success) { int a = Convert.ToInt16(s.Length); a = a – 5; string part = s.Substring(5, a); Spec.Add(part); } } 我正在尝试获取包含单词“Spec”的所有行,然后是空格字符,但是当我运行此程序时出现错误。 例外的细节如下: An unhandled exception of type ‘System.ArgumentOutOfRangeException’ occurred in mscorlib.dll 任何人都可以协助我找出原因吗? […]

可变宽度负向外观中的Star vs. plus量词

愚蠢的问题在这里…我试图匹配线内的空白区域而忽略前导空格/标签并提出这些正则表达式字符串,但我无法弄清楚为什么只有一个工作(C#正则表达式引擎) : (?<!^[ \t]*)[ \t]+ // regex 1. (with *) (?<!^[ \t]+)[ \t]+ // regex 2. (with +) 请注意负面预测中的明星与加重复。 将这些与” word1 word2″ (2个前导空格)匹配时: ⎵⎵word1⎵word2 ^ // 1 match for regex 1. (*) ⎵⎵word1⎵word2 ^^ ^ // 2 matches for regex 2. (+) ^ ^ // why not match like this? 为什么只有版本1.(星号)在这里工作而版本2.(加号)与第二个领先空间不匹配? 我认为这是因为贪婪的优先级+来自[ \t]+不是前瞻,但我怎么能理性化呢?

正则表达式或一个代码来操纵字符串

我正在尝试执行以下操作: 代码前的字符串: “don\’t” “a\\b” 代码后的字符串: “\”don\\\’t\”” “\”a\\\\b\”” 我编写了完美的代码: string x = “”; x += “\””; foreach (var item in s) { if (item == ‘\” || item == ‘\”‘ || item == ‘\\’) { x += ‘\\’; } x += item; } x += “\””; return x; 但是有更好的方法吗? 一个class轮代码? 我不熟悉C#正则表达式,但我认为这可以通过它来实现。 谢谢你的帮助…

c# – uk邮政编码中的正则表达式

我正在寻找c#中常规表达问题的答案。 我正在寻找特定邮政编码格式的匹配并遇到问题。 这是我正在检查的正则表达式模式: ([AZ]{1})([0-9]{2})([0-9]{1})([AZ]{2}) 所以,这是寻找一个字母,两个数字,一个数字,两个字母的格式。 当我在RegexPlanet.com上测试时给了我一个匹配,但是当我在c#中检查时,它给出了一个不寻常的响应。 虽然它在输入A112BBCCCC的测试邮政编码时A112BB ,但当我进入A112BBCCCC ,这也带回了一个匹配。 任何人都知道为什么c#选择忽略匹配后的最后一个字符? 正如我所说,在RegexPlanet.com输入测试仪失败,并表示没有匹配。 谢谢

正则表达式确保在字符串如“05123:12315”中,第一个数字小于第二个?

我必须有x:y格式的字符串,其中x和y必须是五位数(零填充)和x <= y 。 例: 00515:02152 Regex会匹配这种格式? 如果可能,请简要解释一下解决方案,以帮助我学习。 编辑:为什么我需要正则表达式? 我编写了一个通用工具,它根据配置文件获取输入并validation它。 弹出一个意外的要求,要求我以我显示的格式validation字符串(使用配置文件)。 我希望使用我编码的现有配置框架来解决这个问题,因为拆分和解析将超出此工具的范围。 对于像这样的突出要求,我不介意有一些非正统/凌乱的正则表达式,只要它不是10000行长。 任何使用Regex的智能解决方案都表示赞赏! 谢谢。

Timespan-Regex与Days-Portion

我刚尝试了几百个(如果不是数千个……)RegEx可以得到我想要的东西……但是它们都没有用。 我只是在寻找一个正则表达式,代表TimeSpan days.hours:minutes:seconds :7.00:00:00代表“7天” 遗憾的是这个不起作用: (\d\d).(\d\d):(([0-6][0])|([0-5][0-9])):(([0-6][0])|([0-5][1-9]))

如何使用RegEx删除可能嵌套的括号?

我有以下文字: {{some text {{with nested text}} and again}}以及其他一些文字{{remove this too}} 我想匹配OUTERmost {{}}括号,以便我留下: 还有一些文字在这里 这是我到目前为止: var text = Regex.Replace(content, “{{[^}}]*}}”,string.Empty); 有任何想法吗? 任何帮助将非常感激。 更新添加一些可能有用的链接: {{。+?}} http://www.regexr.com/3941i {{。+}} http://www.regexr.com/3941f

在字符串中找到“LEV”

如果存在“LEV”,我想提出一个有效的方法。 “V”是字符串中的最后一个字母。 我正在寻找像这样匹配的正则表达式: WATER LEV answer: true TTM DAB LEV answer: true FOODS IN2 LEV answer: true RLA LEV answer: true dd LEVFF answer: false RLA LEV answer: false due to white space after “V” 这是我尝试过的,但没有奏效: LE*\D[V]

用RegEx重写IsHexString方法

我有一个方法来检查 字符串是否是有效的hex字符串 : public bool IsHex(string value) { if (string.IsNullOrEmpty(value) || value.Length % 2 != 0) return false; return value.Substring(0, 2) == “0x” && value.Substring(2) .All(c => (c >= ‘0’ && c = ‘a’ && c = ‘A’ && c <= 'F')); } 规则是: 表达式必须由偶数个hex数字组成( 0-9,AF,af )。 字符0x必须是表达式中的前两个字符 。 我敢肯定它可以用更清洁,更有效的方式重写正则表达式 。 你可以帮帮我吗?

匹配SQL连接字符串与Regex的部分

我编写了一个正则表达式来匹配SQL连接字符串的部分。 在第一个规范中,初始目录等被强制不包含特殊字符。 所以我有 string strConn = “Data Source=VAIOE;Initial Catalog=SomeTextOnlyCatname;Integrated Security=True;Persist Security Info=True;MultipleActiveResultSets=True;Connect Timeout=0;”; Regex databaseNameRegex = new Regex(@”(?i)\b(Initial\sCatalog|Database)\b\s?=\s?(\w+\s*)*;?”); 现在,我需要匹配可能具有符号,标点符号等名称的部分。例如 string strConn = “Data Source=VAIOE;Initial Catalog=N3wC@t@l0gName*6Symbols;Integrated Security=True;Persist Security Info=True;MultipleActiveResultSets=True;Connect Timeout=0;”; 我要返回的地方Initial Catalog=N3wC@t@l0gName*6Symbols 。 我试过了 Regex databaseNameRegex = new Regex(@”(?i)\b(Initial\sCatalog|Database)\b\s?=\s?(\w+\p{P}*\p{M}*\p{Z}*\s*)*;?”); 但由于连接字符串中存在分号,这会失败。 处理这个问题的最佳正则表达式是什么? 谢谢你的时间。