如何创建一个开始匹配开始搜索的正则表达式?
换一种说法:
等价的是什么\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 次 |
最近记录: |