如何创建一个开始匹配开始搜索的正则表达式?
换一种说法:
等价的是什么\A,"在搜索开始时匹配,即使它不在主字符串的开头"?
new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false
Run Code Online (Sandbox Code Playgroud)
Ala*_*ore 16
你在寻找的是\G:
new Regex(@"\G\n").IsMatch("!\n", 1); // It's twue, it's twue!
Run Code Online (Sandbox Code Playgroud)
实际上,这对我来说是一个惊喜.我知道\G,但它通常被描述为匹配输入开始或最近成功比赛结束的锚点,这两点都不适用于此.如果这是一项.NET创新,那么它们应该更加喧嚣; 看起来它可能非常方便.
编辑:想想看,Java find(int)确实以同样的方式工作 - 我甚至广泛使用它.但后来他们在Java 5中添加了"regions"API,它提供了更好的控制,我忘了这个成语.我从未想过要在.NET中寻找它.
哦,我只是想起了大约 4-5 年前我在一本关于Regex.Match……的书中读过的东西。
重载的行为不像我们期望的那样!
超载
Regex.Match(string input, int index, int length)
Run Code Online (Sandbox Code Playgroud)
指定要搜索的子字符串,而重载
Regex.Match(string input, int index)
Run Code Online (Sandbox Code Playgroud)
只是规定搜索应该从哪里开始!
(我猜,它忽略了从子字符串中的任意位置开始的一种情况。)
希望这对人们有所启发......
| 归档时间: |
|
| 查看次数: |
3294 次 |
| 最近记录: |