Csharp/C#教程:正则表达式匹配冒号后的字符串分享


正则表达式匹配冒号后的字符串

输入字符串是这样的:OU = TEST:This001。 我们需要额外的“This001”。 最好的C#。

关于什么 :

/OU=.*?:(.*)/ 

下面是它的工作原理:

 OU= // Must contain OU= . // Any character * // Repeated but not mandatory ? // Ungreedy (lazy) (Don't try to match everything) : // Match the colon ( // Start to capture a group . // Any character * // Repeated but not mandatory ) // End of the group 

对于/他们的分隔符,要知道正则表达式的起始位置和结束位置(以及添加选项)。

捕获的组将包含This001

但是使用简单的Substring()会更快。

 yourString.Substring(yourString.IndexOf(":")+1); 

资源:

“OU =”闻起来像是在进行Active Directory或LDAP搜索并响应结果。 虽然正则表达式是一个出色的工具,但我只是想确保您也了解用于解析,过滤和操作此类数据的优秀System.DirectoryServices.Protocols类。

特别是SearchResult,SearchResultEntry和DirectoryAttribute将是您可能正在寻找的朋友。 我不怀疑你可以像下一个人一样聪明地使用正则表达式或子串,但是在工具箱中使用另一个好工具也很好。

你试过这些课吗?

没有正则表达式的解决方案:

 var str = "OU=TEST:This00:1"; var result = str.Split(new char[] { ':' }, 2)[1]; // result == This00:1 

Regex vs Split vs IndexOf

分裂

 var str = "OU=TEST:This00:1"; var sw = new Stopwatch(); sw.Start(); var result = str.Split(new char[] { ':' }, 2)[1]; sw.Stop(); // sw.ElapsedTicks == 15 

正则表达式

 var str = "OU=TEST:This00:1"; var sw = new Stopwatch(); sw.Start(); var result = (new Regex(":(.*)", RegexOptions.Compiled)).Match(str).Groups[1]; sw.Stop(); // sw.ElapsedTicks == 7000 (Compiled) 

指数

 var str = "OU=TEST:This00:1"; var sw = new Stopwatch(); sw.Start(); var result = str.Substring(str.IndexOf(":") + 1); sw.Stop(); // sw.ElapsedTicks == 40 

获胜者:分裂

链接

如果OU=TEST:是您要匹配的字符串之前的要求,请使用此正则表达式:

 (?<=OUs*=s*TESTs*:s*).* 

正则表达式匹配冒号后的任何文本长度,而冒号之前的任何文本只是一个要求。

您可以用[A-Za-z]+替换TEST以匹配除TEST之外的任何文本,或者您可以用[w]+替换TEST以匹配任何长度的任何字母和数字组合。

s*表示可能是该位置的任意数量的空格或任何内容,如果您不需要这样的检查,请将其删除。

上述就是C#学习教程:正则表达式匹配冒号后的字符串分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1003204.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐