![](/img/trans.png)
[英]How do I handle case sensitive classes and methods from a c# web service in my VB.net app
[英]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.