繁体   English   中英

如何在开始索引处匹配正则表达式?

[英]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.

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