Tag: regex

C#中的嵌套正则表达式替换

我对正则表达式并不是那么好,但我理解基础知识。 我试图找出如何根据匹配中的某个值进行条件替换。 例如: 假设我有一些嵌套的字符串结构,如下所示: “[id value]”//id and value are space delimited. id will never have spaces id是一些用于命名[]项的字符串id, value是另一个嵌套的[id value]项。 value可能是空的,但我现在并不担心。 如果我有这样的事情: A) “[vehicle [toyota camry]]” or B) “[animal [dog rufus]]” 我希望能够调用某个函数(例如ToString())基于获取输出的id作为regex.Replace从内部最[]结构执行。 来自示例A伪代码: string Return = “{0}”; var 1stValueComboID = GetInteriorValue/IDFrom(“[vehicle [toyota camry]]”); //1stValueComboID.ToString() = “Company: Toyota, Make: Camry” Return = Format.String(Return,1stValueIDCombo.ToString()); var 2stValueComboID = GetSecondValue/IDFrom(“[vehicle […]

如何在不遵循特定字符(?)时使用正则表达式匹配字符(’)?

我怎样才能写一个正则表达式模式,用一个特定的分隔符分割一个字符串,只要它前面没有问号? 我编写了一个解析器,将EDIFACT消息拆分为段,复合和元素。 但在EDI标准中,问号是逃避字符。 所以要拆分这个字符串: ‘PRI+2.005:1+9022.5’RAD+RRHANB97+120814′ 我可以使用string.Split(’\”),然后使用string.split(’+’)然后使用string.split(’:’)来获取PRI,2.005,1,9022.5等等但是,这些字符可以被问号逃脱: ‘PRI+2.005?+3.2:1+9022.5’RAD?’R+RRHANB97+120814′ 现在应该是PRI,2.005 + 3.2,1,9022.5,RAD’R,RRHANB97。 有人可以帮助正则表达式匹配’而不是?’? 谢谢

文本框检查Regex表达式不允许小数

我想创建一个TextChanged事件,检查输入文本是否符合特定条件,如果没有,则删除最后输入的字符。 在这种情况下,标准是数字,1个小数和1个分数。 我正在测试正则表达式只是为了数字和小数而遇到了问题。 我已经尝试了几种不同的表达方式(我写自己很糟糕,因此它们可以从各种其他堆栈溢出问题中获取),结果每次都是相同的。 它接受数字就好了,但它不接受小数。 任何帮助将不胜感激! string isNumber = @”^\d{1,9}(\.\d{1,9})?$”; private void TextBox_TextChanged(object sender, EventArgs e) { TextBox text = (TextBox)sender; Match match = Regex.Match(text.Text, isNumber); if (!match.Success) { if (text.Text.Length > 1) text.Text = text.Text.Substring(0, text.Text.Length – 1); else text.Text = “”; text.Select(text.Text.Length, 0); //set cursor to the end //of the string } }

在字符串上正则表达unicode字符

我正在C#中做一些O​​CR工作,并提取了我需要使用的文本。 现在我需要使用正则表达式解析一行。 string checkNum; string routingNum; string accountNum; Regex regEx = new Regex(@”\u9288\d+\u9288″); Match match = regEx.Match(numbers); if (match.Success) checkNum = match.Value.Remove(0, 1).Remove(match.Value.Length – 1, 1); regEx = new Regex(@”\u9286\d{9}\u9286″); match = regEx.Match(numbers); if(match.Success) routingNum = match.Value.Remove(0, 1).Remove(match.Value.Length – 1, 1); regEx = new Regex(@”\d{10}\u9288″); match = regEx.Match(numbers); if (match.Success) accountNum = match.Value.Remove(match.Value.Length – 1, […]

正则表达式 – 删除跨多个换行符的HTML注释

我正在使用这个脚本: http://www.codeproject.com/Articles/11902/Convert-HTML-to-Plain-Text 将一些outlook HTML转换为纯文本。 它几乎可以工作,它留下的唯一的东西是除了标签(被删除)之外的html注释标签中的CSS 这是原文: tesst   JOE BLOGS 这是生成的文本:(注意HTML注释尚未删除) tesst   JOE BLOGS 我尝试过使用StripHTML()函数和其他替换 – 但这些也不起作用。 result = System.Text.RegularExpressions.Regex.Replace(result, “()”, String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) result = System.Text.RegularExpressions.Regex.Replace(result, “”, String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) 请帮忙 – 这是一份2分钟的工作,自午餐时间以来我一直坚持下去 干杯 编辑1 :也试过以下 – 仍然没有快乐 result = System.Text.RegularExpressions.Regex.Replace(result, “”, String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) result = System.Text.RegularExpressions.Regex.Replace(result, “”, String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) 编辑2:我注意到这个问题得到了很多观点,任何阅读此内容的人都应该三思而后行采用regExp方法,而我建议使用Lynx(OpenSource基于文本的浏览器)将HTML转换为纯文本,我问了一个类似的问题在这里 ,我根据应该从.net应用程序中开始使用lynx.exe的答案提供编辑中的示例代码。 这是我们最终使用的方法,从那时起就没有任何问题。

正则表达式使用C#限制只出现一次打开和关闭括号

如何确保输入文本中不允许多个括号“(”和“)”? 我有以下表达式,允许数字,空格,连字符和括号。 Regex.Match(text, @”^[0-9 (,),-]+$”).Success 我不支持“((123)456-7891或(91)123-23123(1)之类的内容。正确的字符串可以是:”(123)1231231或(121)123-213123。 编辑:抱歉不清楚。 要求是仅允许数字,空格,连字符和括号(仅限一组)。 具体而言,“(”应该总是有一个右括号“)”。 正如你们其中一个人所说的那样没有paren或者一套paren。 如果有人也可以告诉如何在任何位置允许paren不仅在开始时?

正则表达式 – 如何在第一次出现角色时停止

我试图从标签中提取src值,到目前为止我似乎能够提取字符串中src值和最终引号之间的字符串 串: 例如在PHP中: preg_match(‘/src=\”(.*)\”/’, $row->find(‘a img’,0), $matches); if($matches){ echo $matches[0]; } 打印出 src=”http://sofzh.miximages.com/java/amazon_uk.gif” width=”89″ height=”31″ alt=”” 但我真正想要的是… src=”http://sofzh.miximages.com/java/amazon_uk.gif” 或者如果可能的话…… http://i.bookfinder.com/about/booksellers/logo_borderless/amazon_uk.gif 我该怎么加入正则表达式? 谢谢

如何使用正则表达式替换特定匹配(例如“最后”或“倒数第二”)?

我正在尝试替换字符串中的单个(last或next-to-last)匹配。 我已经有了我的正则表达式并且它可以工作,但它取代了所有项目,然后我必须重新运行并替换单个项目。 Regex.Replace(BaseString,MatchString,ReplacementString) 我想使用MatchEvaluator,但无法弄清楚如何。 有帮助吗?

任何人都可以告诉我为什么这个C#电子邮件validation正则表达式(正则表达式)挂起?

我有一个很好的电子邮件vaidation正则表达式: 电子邮件正则表达式 public static void Main(string[] args) { string value = @”cvcvcvcvvcvvcvcvcvcvcvvcvcvcvcvcvvccvcvcvc”; var regex = new Regex( @”^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$”, RegexOptions.Compiled); var x = regex.Match(value); // Hangs here !?! return; } 它适用于大多数情况,但上面的代码挂起,燃烧100%CPU …我已经在W8 metro应用程序中测试过。 以及标准的.Net 4.5应用程序。 任何人都可以告诉我为什么会发生这种情况,如果有一个好的电子邮件validationREGEX没有挂起,或者有没有办法解决这个问题? 非常感谢,乔恩

从文本文件中删除某个字符串的最后一个实例,而不更改该字符串的其他实例

我有一个C#程序,我使用很多RegEx.Replace替换文本文件中的文本。 这是我的问题。 在我的文本文件中,我有一个代码,如“M6T1”。 此代码列在文本文件的许多位置。 但是,我只想从文本文件的底部(最后一个实例)中删除它。 文本文件底部总会有一个“M6T1”,但并不总是最后一行。 它可能是从底部开始的第3行,从底部开始的第5行等。 我只想摆脱“M6T1”的最后一个例子,所以RegEx.Replace在这里不起作用。 我不想干扰文本文件中其他位置的其他“M6T1”。 有人可以帮我解决这个问题吗? 谢谢