首页 > 解决方案 > 正则表达式是否足够聪明,可以采用最短路径(如果可用)来找到匹配项?

问题描述

我正在使用一些“逐字符评估”来帮助 Regex 找到解析算法匹配的最短路径,但我想知道 C# Regex 引擎是否已经这样做了,我只是添加了不必要的代码。

目前我首先找到下一个等号=,然后运行一个带有偏移量的正则表达式来捕获键的名称。

像这样的正则表达式会([0-9A-Za-z]+\s*)=尝试首先找到等号吗?还是会逐字运行该表达式并首先找到一个 0-9A-Za-z char THEN 检查空格 THEN 检查等号?

标签: c#regex

解决方案


regexstorm.net上的一项试验表明,regex 将首先寻找该组。等号的空白搜索成本更低,插入长示例文本,因此不能使用网址缩短器。

如果它符合您的要求,也许您可​​以使用积极的向后看。 (?<=[0-9A-Za-z]+\s*)= 似乎更快,比如先搜索等号。


推荐阅读