我如何 select 在 c# 中全部包含敏感大小写 (regex)?

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

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

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

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

我尝试了很多正则表达式命令,但从未得到预期的结果, 我必须 select 从 示例到结尾

的所有内容

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

\sExample(.*?)+

Image of the result here

当我在 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 (以及两端的 spaces)

第二种是悲观;它一次一个字符地沿着字符串向前蚕食,试图匹配。正则表达式将匹配 Example 然后它会在 .*? 通配符中再输入一个字符,然后检查它是否找到 word - 它找到了。所以悲观匹配只会找到单个 space 而悲观模式下的全匹配是 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