Tag: 正则表达式

.NET中的递归RegEx? (ΔR)

当我在.NET中的RegEx模式中使用(?R)时,我得到一个ArgumentException: 无法识别的分组构造。 (?R)这在.NET中有不同的语法吗?

正则表达式不使用Unicode字符范围

注意 另一个问题是C#正则表达式已经在模式中使用了\ Uxxxxxxxx字符 。 这个问题的不同之处在于它不是关于如何计算代理对,而是如何在正则表达式中表达高于0的unicode平面。 从我的问题中我应该清楚,我已经理解为什么这些代码单元被表示为2个字符 – 它们是代理对(这是另一个问题所要求的)。 我的问题是如何一般地转换它们(因为我无法控制正在使用该程序的正则表达式),因此它们可以被.NET Regex引擎使用。 注意我现在有办法做到这一点,并希望添加我的问题的答案,但由于现在标记为重复,我无法添加我的答案。 我有一些测试数据被传递给我移植到c#的Java库。 我已经将一个特定的问题案例作为一个例子。 原始中的字符类是UTF-32 = \U0001BCA0-\U0001BCA3 ,.NET不易消耗 – 我们得到”Unrecognized escape sequence \U”错误。 我试图转换为UTF-16,我已经确认\ U0001BCA0和\ U0001BCA3的结果应该是预期的。 UTF-32 | Codepoint | High Surrogate | Low Surrogate | UTF-16 ————————————————————————— 0x0001BCA0 | 113824 | 55343 | 56480 | \uD82F\uDCA0 0x0001BCA3 | 113827 | 55343 | 56483 | \uD82F\uDCA3 […]

在.NET中使用regex提取URL

我从以下URL csharp-online中的示例节目中获取灵感,并打算从此页面检索所有URL alexa using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Text.RegularExpressions; namespace ExtractingUrls { class Program { static void Main(string[] args) { WebClient client = new WebClient(); const string url = “http://www.alexa.com/topsites/category/Top/Society/History/By_Topic/Science/Engineering_and_Technology”; string source = client.DownloadString(url); //Console.WriteLine(Getvals(source)); string matchPattern = @”<a.rel=""nofollow"".style=""font-size:0.8em;"".href=[""'](?[^””^’]+[.]*)[“”‘].class=””offsite””.*>(?[^<]+[.]*)”; foreach (Hashtable grouping in ExtractGroupings(source, matchPattern, true)) { […]

正则表达式validation不适用于ASP.Net中的中国文化

我有一个正则表达式validation器,在ASP.Net更改中禁用了客户端validation。 用于此validation器的正则表达式如下所示,它正在validation输入到“ Product Description多行文本框中。 Expression=”^[\\p .,;’\-(0-9)\(\)\[\]]+$” 这个ASP.Net应用程序的文化是web配置中指定的中文。 同一ASP.Net页面中的“ Product Description文本框中的以下输入始终失败。 我试图匹配其中任何一个:中文语言字符或句号或逗号或分号或单引号或数字或圆形/方括号。 问题 :正则表达式中导致此输入文本失败的内容是什么?如何更改它以满足匹配要求? (1)降低庫存過程 (2)增加了吞吐量(1)降低庫存過程 (2)增加了吞吐量(1)降低庫存過程 (2)增加了吞吐量(1)降低庫存過程 (2)增加了吞吐量

结合代码契约和正则表达式

所以我有一个非常简单的类,其中一个字符串作为属性。 该字符串必须具有某种模式。 我正在尝试使用代码合同来强制执行此操作。 该类看起来像这样: class SimpleClass { public Property { get; set; } public SimpleClass(string prop) { Contract.Requires(IsValid(prop)); this.Property = prop; } [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(IsValid(Property)); } bool IsValid(string arg) { // Use regex to check if arg is a valid string } } 非常直截了当。 但是,这会引发一个不可读的exception,另一个说“Member SimpleClass.IsValid的可见性低于封闭方法SimpleClass。#ctor(System.String)”。 为什么这是非法的? 我应该将正则表达式复制/粘贴到两种方法中吗? 这似乎与正确相反。 请帮我理解!

正则表达式号码手机

我的话(电话号码)可能在开头“00”或“+”。 电话号码示例: 00xxx xx xxxxxxx +xxx xx xxxxxxx (+xxx) xx xxxxxxx (00xxx) xx xxxxxxx 我有: Regex regexObj = new Regex(@”^\(?[+( ]?([0-9]{3})\)?[) ]?([0-9]{2})[- ]?([0-9]{7})$”); if (regexObj.IsMatch(TextBox1.Text)) { // IF OK string formattedPhoneNumber = regexObj.Replace(TextBox1.Text, “(+$1) $2 $3”); } 如何把它放在正则表达式中? 现在我只能把“+”和“(”,“)”放进去 谢谢

解析TSV文件

我需要解析TSV格式的文件(制表符分隔值)。 我使用正则表达式将文件分解为每一行,但我找不到令人满意的解析每一行。 现在我来了: (?(“[^”]+”)+|[^\t]+) 但如果该行中的项目具有超过2个连续的双引号,则它不起作用。 以下是文件的格式:每个元素由制表分隔。 如果某个项目包含一个标签,则该标签包含双引号。 如果项目包含双引号,则会加倍。 但有时一个元素包含4个连续双引号,上面的正则表达式将元素分成2个不同的元素。 例子: item1ok“item”“2”“oK” 正确解析为2个元素: item1ok和项目“2”ok (修剪不必要的引号后),但是: item1oK“item”“”“2oK” 被解析为3个元素: item1ok , item和“2ok (再次修剪后)”。 有谁知道如何让正则表达式适合这种情况? 或者是否有另一种解决TSV的解决方案? (我在C#中这样做)。

如何使用C#在文本中查找重复的单词组?

我在StringBuilder(sb)中反复使用这个代码,我在互联网上找到了这个代码,根据作者的说法,它与Word的单词计数器非常一致。 StringBuilder wordBuffer = new StringBuilder(); int wordCount = 0; // 1. Build the list of words used. Consider ”’ (apostrophe) and ‘-‘ (hyphen) a word continuation character. Dictionary wordList = new Dictionary(); foreach (char c in sb.ToString()) { if (char.IsLetter(c) || c == ‘\” || c == ‘-‘) { wordBuffer.Append(char.ToLower(c)); } else { if […]

“通用”电话号码的基本正则表达式

我需要一个正则表达式(用于ASP .NET网站)来validation电话号码。 它应该是灵活的,唯一的限制是: 应该至少9位数 没有字母 可以包括空格,连字符,单个(+) 我搜索过SO和Regexlib.com,但我得到了更多限制的表达,例如英国电话或美国等。

如何检查字符串是否包含单词的所有字符

我希望检查字符串是否包含给定单词的所有字符,例如: var inputString = “this is just a simple text string”; 并说我有这个词: var word = “ts”; 现在它应该挑选出包含t和s的单词: 这只是字符串 这就是我正在做的事情: var names = Regex.Matches(inputString, @”\S+ts\S+”,RegexOptions.IgnoreCase); 但这并没有让我回复我喜欢的词。 如果我只喜欢像t这样的角色,那么它会给我所有包含t的单词。 如果我有st而不是ts ,它会让我回复这个词。 知道这是如何工作的吗?