[英]How to match regex at start index?
如何创建一个开始匹配开始搜索的正则表达式?
换一种说法:
等于\\A
是什么,即“在搜索开始时匹配,即使它不在主字符串的开头”?
new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false
你要找的是\\G
:
new Regex(@"\G\n").IsMatch("!\n", 1); // It's twue, it's twue!
实际上,这对我来说是一个惊喜。 我知道\\G
,但它通常被描述为匹配输入开始或最近成功匹配结束的锚点,这两点都不适用于此。 如果这是一项.NET创新,那么它们应该更加喧嚣; 看起来它可能非常方便。
编辑:想想看,Java的find(int)
确实以同样的方式工作 - 我甚至广泛使用它。 但后来他们在Java 5中添加了“regions”API,它提供了更好的控制,我忘了这个成语。 我从未想过要在.NET中寻找它。
哦,我只记得我在4 - 5年前在一本关于Regex.Match
的书中Regex.Match
......
重载不像我们期望的那样!
超载
Regex.Match(string input, int index, int length)
指定要搜索的子字符串 ,而重载
Regex.Match(string input, int index)
只是指示搜索应该从哪里开始 !
(我想这是从子串中的任意位置开始的一种情况。)
希望这对人们具有启发意义......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.