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

本文关键字:正则表达式 索引 开始 | 更新日期: 2023-09-27 18:15:10

如何创建一个开始匹配的正则表达式,它开始搜索?

换句话说:

什么是'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的一个创新,他们应该更多地宣传它;这看起来很方便。

EDIT:仔细想想,Java的find(int)确实以同样的方式工作——我甚至广泛使用过它。但是后来他们在Java 5中添加了"区域"API,它提供了更好的控制,我忘记了这个习惯用法。我从没想过要在。net中寻找它

哎呀,我突然想起了4-5年前我在一本关于Regex.Match的书中读到的一些东西…

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

过载

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

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

Regex.Match(string input, int index)

仅仅指示了搜索应该从哪里开始!

(我猜它省略了在子字符串中从任意位置开始的一种情况)