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

时间:2011-11-20 06:00:56

标签: c# .net regex

如何创建开始匹配开始搜索的正则表达式

换句话说:

\A的等价物是什么,“在搜索开始时匹配,即使它不在主字符串的开头”?

new Regex(@"\A\n").IsMatch("!\n", 1);    // Should be true, but is false

2 个答案:

答案 0 :(得分:16)

您正在寻找的是\G

new Regex(@"\G\n").IsMatch("!\n", 1);    // It's twue, it's twue!
实际上,这对我来说是一个惊喜。我知道\G,但它通常被描述为匹配输入开始或最近成功匹配结束的锚点,这两点都不适用于此。如果这是一项.NET创新,那么它们应该更加喧嚣;它看起来非常方便。

编辑:考虑到这一点,Java find(int)确实以同样的方式工作 - 我甚至广泛使用它。但随后他们又添加了"地区" Java 5中的API提供了更好的控制,我忘了这个成语。我从未想过要在.NET中寻找它。

答案 1 :(得分:4)

哦,我只记得我读过的东西〜4 - 5年前在一本关于Regex.Match的书......

重载不像我们期望的那样!

重载

Regex.Match(string input, int index, int length)

指定要搜索的子字符串,而重载

Regex.Match(string input, int index)

仅指示搜索开始的位置

(我猜这是从子串中的任意位置开始的一种情况。)

希望这对人们有启发......