如何在开始索引匹配正则表达式
本文关键字:正则表达式 索引 开始 | 更新日期: 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)
仅仅指示了搜索应该从哪里开始!
(我猜它省略了在子字符串中从任意位置开始的一种情况)