Tag: regex

使用Regex和Pushdown-Automata匹配嵌套括号组

我正在研究ac#正则表达式,它可以匹配嵌套结构(本例中为圆括号)以及任意运算符(在本例中为“|”字符)。 我已经开始使用这里描述的下推自动机。 到目前为止我所拥有的: String pattern = @” (?# line 01) \( (?# line 02) (?> (?# line 03) \( (?) (?# line 04) | (?# line 05) \) (?) (?# line 06) | (?# line 07) .? (?# line 08) )* (?# line 09) (?(DEPTH)(?!)) (?# line 10) \) “; var source = “((Name1| Name2) […]

括号之间用逗号分组字符串

响应: 正则表达式查找包含在两个字符之间的字符串,同时排除分隔符 嗨,我正在寻找适用于我的字符串的正则表达式模式,包括括号: [1,2,3,4,5] [abc,ef,g] [0,2,4b,y7] 可以是任何东西,包括单词,数字,非单词在一起或分开。 我希望通过\[(.*?)\]得到括号之间的组,但是什么是正则表达式模式,它将在括号和子组字符串之间用逗号分隔,以便结果可能跟随? 第1组:1,2,3,4,5 第1组:1 第2组:2 第3组:3 第4组:4 第5组:5 第2组:abc,ef,g 第1组:abc 第2组:ef 第3组:g 等.. 谢谢您的帮助

正则表达式默认ASP.NET核心标识密码

注意 :我相信这个问题不是这个问题的重复。 我的问题是处理asp.net核心身份用于密码validation的默认validation规则以及如何制作正则表达式,而链接的问题正在讨论,一般是关于validation密码的行为(这不能解决我的问题) ASP.NET Core启用默认的密码validation 最少8个字符 至少应该有一个号码 至少应该有一个大写字母 至少应该有一个小写字母 应该至少有一个特殊字符(允许哪些特殊字符?) 记住这些条件我尝试制作以下正则表达式,但它不起作用。 ^((?=.*?[AZ])(?=.*?[az])(?=.*?[0-9])|(?=.*?[AZ])(?=.*?[az])(?=.*?[^a-zA-Z0-9])|(?=.*?[AZ])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9])|(?=.*?[az])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9])).{8,}$ 即使当点2,3,4,5中的三个条件中的任何一个匹配时,该正则表达式也接受字符串。 但我希望所有条件都应该满足。 我在这做错了什么?

Json.Parse转义换行符

我有一个页面,我试图使用JSON.parse解析json字符串 ‘[{“Name”:”Eggs”,”Complete”:false,”Notes”:”Notes here\n”},{“Name”:”Sugar”,”Complete”:false,”Notes”:null}]’ 但是下面的代码给出了错误”Uncaught SyntaxError: Unexpected token” var groceriesJson = JSON.parse(jsonString); 然后我开始知道它是因为在json字符串中的\n 。 所以我尝试了这个解决方案 。 但没有运气。 仍然是同样的错误”Uncaught SyntaxError: Unexpected token” function escapeSpecialChars(jsonString) { return jsonString.replace(/\\n/g, “\\n”) .replace(/\\’/g, “\\'”) .replace(/\\”/g, ‘\\”‘) .replace(/\\&/g, “\\&”) .replace(/\\r/g, “\\r”) .replace(/\\t/g, “\\t”) .replace(/\\b/g, “\\b”) .replace(/\\f/g, “\\f”); } var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 有任何想法吗? 谢谢 —更新—- 我不是手动创建这个字符串,我有c#代码从c#对象创建json字符串 var jss = new System.Web.Script.Serialization.JavaScriptSerializer(); var […]

c#validation该字符串是否包含匹配的括号

如果我有这样的字符串…… “123[1-5]553[4-52]63244[19-44]” …validation以下条件的最佳方法是什么: 每个开放式支架都有一个匹配的近支架 不超过3组括号 没有嵌套括号(即[123- [4] 9]) 正则表达式能够validation所有这些场景吗? 如果没有,LINQ怎么样?

‘正则表达’VS’字符串比较运算符/函数’

这个问题是围绕PHP中的性能设计的,但如果您愿意,可以将其扩展为任何语言。 经过多年使用PHP并且不得不比较字符串,我已经了解到在性能方面使用字符串比较运算符而不是正则表达式是有益的。 我完全理解一些操作必须使用正则表达式来完成复杂性,但对于可以通过正则表达式和字符串函数解决的操作。 举个例子: PHP preg_match(‘/^[az]*$/’,’thisisallalpha’); C# new Regex(“^[az]*$”).IsMatch(‘thisisallalpha’); 可以轻松完成 PHP ctype_alpha(‘thisisallalpha’); C# VFPToolkit.Strings.IsAlpha(‘thisisallalpha’); 还有很多其他的例子,但你应该明白我想要的。 你应该尝试和倾向于什么版本的字符串比较?为什么?

正则表达式从名称中提取首字母

eg. if the Name is: John Deer the Initials should be: JD 我可以使用子字符串在Initials字段上执行此检查,但是想知道我是否可以为它编写正则表达式? 编写正则表达式比使用字符串方法更好吗?

C#Regex.Split – Subpattern返回空字符串

嘿,这个令人敬畏的社区的第一次海报。 我在我的C#应用​​程序中有一个正则表达式来解析变量的赋值: NewVar = 40 在文本框中输入。 我希望我的正则表达式返回(使用Regex.Split)变量的名称和值,非常简单。 这是我到目前为止的正则表达式: var r = new Regex(@”^(\w+)=(\d+)$”, RegexOptions.IgnorePatternWhitespace); var mc = r.Split(command); 我的目标是在正则表达式中修剪空白而不使用返回值的Trim()方法。 目前,它可以工作,但它在MatchCollection的开头返回一个空字符串,在结尾处返回一个空字符串。 使用上面的输入示例,这是从Regex.Split返回的: mc[0] = “” mc[1] = “NewVar” mc[2] = “40” mc[3] = “” 所以我的问题是:为什么它在开头和结尾都返回一个空字符串? 谢谢。

解析所有可能类型的不同建筑维度输入

我正在为我们公司的产品编写一个库,它将采用我们用户已经熟悉的任何体系结构维度作为从字符串转换为double的函数的输入。 以下是我们希望有效的输入类型列表。 Input | 意义| Output (英寸用双精度表示) 12.5′ | 12英尺和6英寸| 150.0 11″ | 11英寸| 11.0 3/16″ |英寸的十六分之一| 0.1875 在英尺和英寸以及英寸和十六分之间可以使用或不使用空格 143.0 11′ 11″ | 11英尺和11英寸| 143.0 11’11” | 11英尺11英寸| 143.0 在英尺和英寸之间或英寸和十六分之间或两者之间可以使用或不使用破折号 12′-11″ | 12英尺和11英寸| 155.0 155.1875 12′ 11 3/16″ | 12英尺和11英寸和3个十六分之一| 155.1875 12′ 11-1/2″ | 12英尺和11英寸和8个十六分之一| 155.5 在英尺和英寸以及英寸和十六分之间可以使用任意数量的空间 12′ 11 1/2″ | 12英尺和11英寸和8个十六分之一| 155.5 还提供了另一种更简单的格式 121103 […]

正则表达式,匹配所有有效格式的IPv6地址

乍一看,我承认这个问题看起来像这个问题的副本以及与之相关的任何其他问题: 与有效IPv6地址匹配的正则表达式 事实上这个问题的答案几乎可以回答我的问题, 但并不完全。 我遇到的问题代码,但最成功的代码如下所示: private string RemoveIPv6(string sInput) { string pattern = @”(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))”; //That is one looooong regex! From: https://stackoverflow.com/a/17871737/3472690 //if (IsCompressedIPv6(sInput)) // sInput = UncompressIPv6(sInput); string output = Regex.Replace(sInput, pattern, “”); if (output.Contains(“Addresses”)) output = output.Substring(0, “Addresses: “.Length); return output; } 我在答案中提供的正则表达式模式的问题, David M. Syzdek的答案 ,是它不匹配并删除我正在抛出的IPv6地址的完整forms。 我正在使用正则表达式模式主要用空格或空值替换字符串中的IPv6地址。 例如, Addresses: 2404:6800:4003:c02::8a 以及… Addresses: 2404:6800:4003:804::200e […]