繁体   English   中英

如何在 c# 中选择所有包括敏感大小写(正则表达式)的内容?

[英]How do I select all including sensitive case (regex) in c#?

我的正则表达式命令有问题,

我有一个包含大量行和许多敏感字符的文件,

this is an Example with all sensitive case 0123456789/*-+.&é"'(-è_çà)=~#{[|`\^@]}²$*ù^%µ£¨¤,;:!?./§<>AZERTYUIOPMLKJHGFDSQWXCVBNazertyuiopmlkjhgfdsqwxcvbn

我尝试了很多正则表达式命令,但从未得到预期的结果,我必须选择从Example 到最后的所有内容


我在https://www.regextester.com/上尝试了这个命令:

\\s示例(.*?)+

结果的图像在这里

当我在C# 中尝试它时,我得到的唯一结果是: Example

我不明白为什么——”

这是关于贪婪和悲观的快速聊天:

下面是测试数据:

Example word followed by another word and then more

这是两个正则表达式:

Example.*word
Example.*?word

第一个是贪心。 正则表达式将匹配Example然后它将采用.* ,它一直消耗到字符串的 END 的所有内容,并且工作向后一次吐出一个字符,试图使匹配成功。 Example word followed by another word匹配时,它会成功, .* 匹配的word followed by another (以及两端的空格)

二是悲观; 它一次一个字符地沿着字符串向前啃,试图匹配。 正则表达式将匹配Example然后它会在.*? 通配符,然后检查它是否找到了word - 它找到了。 所以悲观匹配只会找到一个空格,悲观模式下的完整匹配是Example word

因为你说你想要在 Example 之后的整个字符串,我建议使用一个贪婪的量词,所以它只是立即获取剩余的整个字符串并声明匹配,而不是一次向前一个(慢)

然后,这将匹配(并捕获)示例之后的所有内容:

\sExample(.*)

括号构成一个捕获组。 在 c# 中,我们可以使用?<namehere>在方括号的开头命名组,然后可以检索 .* 匹配的所有内容:

Regex r = new Regex("\sExample(?<x>.*)");
Match m = r.Match("Exampleblahblah");
Console.WriteLine(m.Groups["x"].Value); //prints: blahblah 

请注意,如果您的数据包含换行符,则应注意 . 不匹配换行符,除非您在创建正则表达式时启用 RegexOptions.SingleLine

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM