我正在尝试理解以下正则表达式量词(这只是一个示例性令牌):
a{n}?
Run Code Online (Sandbox Code Playgroud)
问号如何影响上述表达式的匹配?它与以下内容有何不同?
a{n}
Run Code Online (Sandbox Code Playgroud)
我本来期望的模式aa{1}?a同时匹配aaa和aa为例子.虽然它匹配aaa,aa是不是匹配.模式a(a{1})?a确实匹配两者,所以括号确实在这里有所作为.
注意:正则表达式中的msdn文章Quantifiers表示:
{n}量词恰好与前一个元素匹配n次,其中n是任意整数.
因为{n}?,它增加了以下内容,而不是过于有用的部分:
它是贪婪量词{n} +的懒惰对应物.
没什么.文章指出:
的{N}量词前面的元素完全匹配Ñ次,其中Ñ是任意整数.{ n }是一个贪婪的量词,它的惰性等价是{ n }?.
...
该{N}?量词恰好与前一个元素匹配n次,其中n是任意整数.它是贪婪量词{ n } +的懒惰对应物.
请注意文本完全相同.基本上,添加?不会改变量词的行为.似乎.NET的正则表达式引擎支持{n}?作为替代{n}.
有趣的是,这篇文章似乎确实包含一个错误:
的{ Ñ,}量词前述元素相匹配的至少Ñ次,其中Ñ是任意整数.{ n, }是一个贪婪的量词,它的懒惰等价是{ n }?.
这是错的.懒惰的等效的{n,}是{n,}?这是不一样的{n}?.
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |