Tag: regex

解析HTML文档:正则表达式还是LINQ?

尝试解析HTML文档并提取一些元素(文本文件的任何链接)。 当前的策略是将HTML文档加载到字符串中。 然后找到文本文件的所有链接实例。 它可以是任何文件类型,但对于这个问题,它是一个文本文件。 最终目标是拥有一个IEnumerable字符串对象列表。 这部分很简单,但解析数据是个问题。 Blah Here is your first text file: Here is your second text file: Here is your third text file: Here is your fourth text file: Thanks for visiting! 最初的方法是: 将字符串加载到XML文档中,并以Linq-To-Xml方式对其进行攻击。 创建一个正则表达式,查找以href=开头,以.txt结尾的字符串 问题是: 那个正则表达式是什么样的? 我是一个正则表达式的新手,这是我的正则表达式学习的一部分。 您将使用哪种方法提取标签列表? 这将是最高效的方式? 哪种方法最易读/可维护? 更新:在HTML Agility Pack建议中向Matthew致敬。 它工作得很好! XPath建议也适用。 我希望我能将这两个答案都标记为“答案”,但我显然不能。 它们都是解决问题的有效方法。 这是一个使用Jeff建议的正则表达式的C#控制台应用程序。 它读取字符串很好,并且不包括任何未以.txt结尾的href。 使用给定的示例,它正确地.txt.snarg结果中包含.txt.snarg文件(在HTML字符串函数中提供)。 using System; […]

拆分字符串并忽略引号内的分隔符

我使用.NET的String.Split方法使用逗号分解字符串,但我想忽略用双引号括起来的字符串。 我读过那个 例如,下面的字符串。 Fruit,10,”Bananas, Oranges, Grapes” 我想得到以下内容 Fruit 10 “Bananas, Oranges, Grapes” 目前我得到以下输出 Fruit 10 “Bananas Oranges Grapes” enter code here 在提出以下建议和答案之后,这里是我最终得到的样本。 (显然对我有用) Imports Microsoft.VisualBasic.FileIO Dim fileReader As New TextFieldParser(fileName) fileReader.TextFieldType = FieldType.Delimited fileReader.SetDelimiters(“,”) fileReader.HasFieldsEnclosedInQuotes = True While fileReader.EndOfData = False Dim columnData() As String = fileReader.ReadFields ‘ Processing of field data End While

从REGEX生成测试数据

伙计们, 有没有人知道将从REGEX生成测试数据的DLL或.net代码? 我知道正则表达式生成器和stackoverflow问题中提供的解决方案使用Regex生成字符串而不是匹配它们 。 不幸的是,我在C#中编写,我需要在运行时生成测试数据。 我也尝试过Rex ,但是当我尝试在虚拟机上加载它时会出错。 任何帮助,将不胜感激。 问候, 布雷特尼兰德

在大文件中搜索和替换正则表达式而不会出现OutOfMemoryException

我创建了一个小代码,用于搜索正则表达式字符串并将其替换为其他字符串,然后创建一个包含所做更改的新输出文件。 代码似乎适用于较小的文件,但对于100 MB或更大的文件,我给出了System.OutOfMemoryException错误。 这是我的代码: string foldername = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Desktop), String.Format(“FIXED_{0}.tmx”, Path.GetFileNameWithoutExtension(textBox1.Text))); string text = File.ReadAllText(textBox1.Text); text = Regex.Replace(text, @”]*>”, “”, RegexOptions.Multiline); text = Regex.Replace(text, @” “, “”, RegexOptions.Multiline); File.WriteAllText(foldername, text); Visual Studio突出显示string text = File.ReadAllText(textBox1.Text); 部分。 我认为也许使用File.ReadAllLines可以更好地工作,但我无法使其与正则表达式一起工作。 有人可以帮我吗? 我是C#的新手,可能我的代码不是最好的。

使用正则表达式进行电话号码格式化

可能重复: 用于电话号码validation的全面正则表达式 我有一个未格式化的电话号码(保证是10位数)和未格式化的扩展名(可以是空,空白或任意数量的数字)。 我需要将它们组合成一个“友好”的字符串。 我以为我会连接它们,然后使用Regex.Replace格式化连接。 这是我插入之前尝试各种正则表达式的unit testing: [Test, Ignore(“Sandbox, does not test production code”)] public void TestPhoneRegex() { string number = “1234567890”; string extension = “”; var formattedContactNumber = Regex.Replace(“{0} x{1}”.FormatWith(number, extension), @”^(\d{3})[ -]?(\d{3})[ -]?(\d{4})( x\d+)?”, @”$1-$2-$3$4″); Debug.WriteLine(“{0} x{1}”.FormatWith(number, extension)); Debug.WriteLine(formattedContactNumber); Assert.AreEqual(“123-456-7890”, formattedContactNumber); } 预期的格式化字符串是格式化的电话号码,没有“x”和扩展名。 但是,最后一个捕获组匹配“x”有或没有数字,因此代替“123-456-7890”我得到“123-456-7890 x”。 这是在发布之前需要关联的最后一点开发。 救命?

正则表达式为^ | 在C#中

我正在研究HL7消息,我需要一个正则表达式。 这不起作用: HL7 message=MSH|^~\&|DATACAPTOR|123|123|20100816171948|ORU^R01|081617194802900|P|2.3|8859/1 我的正则表达式是: MSH|^~\&|DATACAPTOR|\d{3}|\d{3}|(\d{4}\d{2}\d{2}\d{2}\d{2}\d{2})|ORU\\^R01|\d{20}|P|2.3|8859/1 任何人都可以建议特殊字符的正则表达式? 我正在使用此代码: strRegex = “\\vMSH|^~\\&|DATACAPTOR|\\d{3}|\\d{3}| (\\d{4}\\d{2}\\d{2}\\d{2}\\d{2}\\d{2})|ORU\\^R01|\\d{20}|P|2.3|8859/1”; Regex rx = new Regex(strRegex, RegexOptions.Compiled | RegexOptions.IgnoreCase );

路径和字母数字字符的正则表达式

我需要正则表达式来validation路径 /addd/dddd aaaa/bbbb/ a1233/dddd but not @ddd/aaaa 或任何其他符号,我该怎么做?

使用C#从驻留在DB中的字符串集自动生成Regex

我在数据库中有大约100,000个字符串,我想如果有办法从这些字符串自动生成正则表达式模式。 所有这些都是字母字符串,并使用英文字母组成的字母表。 例如,不使用(X,W,V)。 是否有任何函数或库可以帮助我在C#中实现这个目标? 示例字符串是 KHTK RAZ 鉴于这两个字符串,我的目标是生成一个正则表达式,允许像(k,kh,kht,khtk,r,ra,raz)这样的模式当然不区分大小写。 我已经下载并使用了一些有助于生成正则表达式的C#应用​​程序,但这在我的场景中没用,因为我想要一个进程,我从db中顺序读取字符串并将规则添加到regex,这样这个正则表达式可以在以后的应用程序中重用或者保存在磁盘上。 我是正则表达式模式的新手,不知道我问的问题是否可能。 如果不可能,请建议我一些替代方法。

如何使用正则表达式从字符串中提取日期

我正在寻找可以从以下html中提取日期的正则表达式 British Medical Journal, 29.9.12, pp.37-41. 并以29/09/12的格式转换它

正则表达式查找字符串中的任何字母排列

我有这个正则表达式: ([abc])(?!\1)([abc])(?!\2|\1)([abc]) 在给定的字符串中找到“abc”(abc,acb,bac,bca,cab和cba)的任何排列,例如: aabbccabcabbccaassbbsdddbbsbdbabc 那个正则表达式运行良好,但是现在我需要另一个正则表达式来做同样的但是所有的排列没有重复“abbc”(12种组合) 我需要在一个字符串中找到4个字符,其中包含一个“a”,两个“b”和一个“c”。 无论顺序如何,都必须连续。 (abbc,babc,bbca …) 我的问题与建议的问题不同,因为它有一个必须重复2次的角色 1. Find [abc] 2. Find “a” or “c” if it is not in 1. Find “b” 3. Find “a” or “c” if it doesn’t appear in 1. or 2. Find “b” if it is not alreday 2 times 4. Find “a” or “c” if it […]