Tag: 正则表达式

使用c#中的正则表达式解析电子邮件

我需要用c#中的正则表达式解析电子邮件文件,即解析包含多个电子邮件的电子邮件文件并将其解析为其成分,例如from,to,bcc等。 用于电子邮件的正则表达式是 “\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*” 我遇到的问题是To,Cc和Bcc有时包含多个电子邮件,并且出现在多行中 To: Me meagain , Me1 meagain ,Me3 meagain 此外,哪个正则表达式将匹配该消息?

正则表达式匹配除crlf之外的全行文本

正则表达式模式如何匹配给定文本的每一行? 我正在尝试^(.+)$但它包括crlf …

动态正则表达式生成,用于数据馈送中可预测的重复字符串模式

我目前正在尝试处理一些我无法控制的数据源,我在C#中使用正则表达式来提取信息。 数据馈送的发起者从其数据库中提取基本行数据(如产品名称,价格等),然后在英文文本行中格式化该数据。 对于每一行,一些文本是重复的静态文本,一些是从数据库中动态生成的文本。 例如 松下电视免费蓝光播放器 索尼电视免费DVD播放机+票房DVD Kenwood Hi-Fi部门提供20美元的亚马逊MP3优惠券 因此,此实例中的格式为:带有FREEGIFT的 PRODUCT 。 PRODUCT和FREEGIFT是每行的动态部分,“with”文本是静态的。 每个Feed有大约2000行。 创建正则表达式以提取动态部分是微不足道的。 问题在于,控制数据源的营销方式一直在改变静态文本的结构,通常是两周一次,所以本周我可能会: 如果您今天订购,全新松下电视和免费蓝光播放器 如果您今天订购,全新索尼电视和免费DVD播放机+票房DVD 如果您今天订购,全新的Kenwood Hi-Fi装置和20美元的亚马逊MP3优惠券 下周它可能会有所不同,所以我必须继续修改我的正则表达式…… 你会怎么处理这个? 是否有算法来确定重复的字符串行中的静态和可变文本? 如果是这样,那么使用这种算法的输出以编程方式创建动态正则表达式的最佳方法是什么? 感谢您的帮助或建议。

控制平衡括号

假设我们有一个包含不同括号的字符串(在这个上下文中用括号表示我是指( , [和{ ),字符串也可以包含其他内容,如{[balanced(parenthesis)]}但其余的内容将在很大程度上被忽略是否可以使用正则表达式来控制所有不同的括号: “关闭” ,即每个“开放”括号与“结束”括号匹配,并且 在字符串中的正确位置?

正则表达式减慢了程序

我正在尝试创建一个程序来解析游戏聊天记录中的数据。 到目前为止,我已经设法让程序工作并解析我想要的数据,但问题是程序变慢了。 目前解析一个10MB的文本文件需要5秒钟,我注意到如果我将RegexOptions.Compiled添加到我的正则表达式,它会下降到3秒。 我相信我已经在我的正则表达式匹配中找到了问题。 由于5个正则表达式,当前读取了一行5次,因此当我稍后添加更多时,程序会变得更慢。 我应该怎么做才能使我的程序不会因多个正则表达式而减速? 所有使代码更好的建议都值得赞赏! if (sender.Equals(ButtonParse)) { var totalShots = 0f; var totalHits = 0f; var misses = 0; var crits = 0; var regDmg = new Regex(@”(?<=\bSystem\b.* You inflicted )\d+.\d", RegexOptions.Compiled); var regMiss = new Regex(@"(?<=\bSystem\b.* Target evaded attack)", RegexOptions.Compiled); var regCrit = new Regex(@"(?<=\bSystem\b.* Critical hit – additional damage)", RegexOptions.Compiled); […]

C#中的正则表达式大写替换

我有以下C#,它简单地将看起来像EQUIP:19d005的输入字符串部分替换为URL,如下所示: input = Regex.Replace(input, @”(EQUIP:)(\S+)”, @”$1$2″, RegexOptions.IgnoreCase); HTML最终看起来像这样。 EQUIP:19d005 唯一的麻烦是目标页面要求eqnum查询字符串全部为UPPERCASE,因此它在eqnum = 19D005时返回正确的设备,但如果收到eqnum = 19d005则失败。 我想我可以修改和纠正EquipmentDisplay.asp对大写值的错误要求,但是,如果可能的话,我想通过在上面的Regex.Replace语句中大写$ 2来使C#代码符合现有的经典ASP页面。 理想情况下,我希望返回的HTML看起来像这样: EQUIP:19d005 请注意,虽然原始字符串是EQUIP:19d005(小写),但只有eqnum =值是大写的。 它可以做到,如果是这样,最干净的方法是什么?

C#字符串操作搜索和替换

我有一个字符串,其中包含forms的 。 有没有一种简单的方法让我以编程方式用特殊的ascii字符替换这些标签的实例? 例如用’/t’的ascii等价替换像””这样的标签?

正则表达式匹配美元金额

有人能为我提供以下模式的正则表达式吗? $ 1234 $ 31234.3 $ 1234.56 $ 123456.78 $ .99 我的要求是十进制前的数字不应超过6,小数点后不应超过2位。 请帮我。 提前致谢..

从字符串获取大写字母的索引

可能重复: 一种“松散”CamelCased字符串的算法 我有一个这样的字符串: MyUnsolvedProblem 我想修改这样的字符串: My Unsolved Problem 我怎样才能做到这一点? 我尝试过使用正则表达式没有运气!

搜索大量文本列表的最快方法

我有一个用C#编写的Windows应用程序需要从数据库加载250,000行,并提供“键入时搜索”function,这意味着只要用户在文本框中键入内容,应用程序就需要搜索所有250,000条记录(其中是btw,单列,每行1000个字符)使用like search并显示找到的记录。 我遵循的方法是: 1-应用程序将所有记录加载到类型化的List while (objSQLReader.Read()) { lstEmployees.Add(new EmployeesData( Convert.ToInt32(objSQLReader.GetString(0)), objSQLReader.GetString(1), objSQLReader.GetString(2))); } 2-在TextChanged事件中,使用LINQ ,我搜索(结合使用正则表达式)并将IEnumerable附加到处于虚拟模式的ListView。 String strPattern = “(?=.*wood*)(?=.*james*)”; IEnumerable lstFoundItems = from objEmployee in lstEmployees where Regex.IsMatch(Employee.SearchStr, strPattern, RegexOptions.IgnoreCase) select objEmployee; lstFoundEmployees = lstFoundItems; 处理3-4 RetrieveVirtualItem事件以显示ListView中的项目以显示该项目。 e.Item = new ListViewItem(new String[] { lstFoundEmployees.ElementAt(e.ItemIndex).DateProjectTaskClient, e.ItemIndex.ToString() }); 虽然从SQL Server加载列表相对较快(1.5秒)加载lstEmployees ,但要在TextChanged上搜索,使用LINQ搜索需要7分钟以上。 通过执行LIKE搜索直接搜索SQL Server只需不到7秒。 我在这做错了什么? 如何更快地进行此搜索(不超过2秒)? 这是我的客户的要求。 所以,任何帮助都非常感谢。 […]