c# - 正则表达式是否足够聪明,可以采用最短路径(如果可用)来找到匹配项?
问题描述
我正在使用一些“逐字符评估”来帮助 Regex 找到解析算法匹配的最短路径,但我想知道 C# Regex 引擎是否已经这样做了,我只是添加了不必要的代码。
目前我首先找到下一个等号=
,然后运行一个带有偏移量的正则表达式来捕获键的名称。
像这样的正则表达式会([0-9A-Za-z]+\s*)=
尝试首先找到等号吗?还是会逐字运行该表达式并首先找到一个 0-9A-Za-z char THEN 检查空格 THEN 检查等号?
解决方案
regexstorm.net上的一项试验表明,regex 将首先寻找该组。等号的空白搜索成本更低,插入长示例文本,因此不能使用网址缩短器。
如果它符合您的要求,也许您可以使用积极的向后看。
(?<=[0-9A-Za-z]+\s*)=
似乎更快,比如先搜索等号。
推荐阅读
- linux - OCI runtime error for Docker on Debian Bullseye
- html - The website UI does not look fine in safari but looks perfect in chrome and firefox
- ios - 测试目标中没有这样的模块“RxBlocking”
- css - How can I have node-sass output files into a different folder?
- azure-devops - 无法在 Azure Devops 部署组(自托管)上运行 ASP.NET Core Web API
- vaadin - Vaadin: change CSS variables dynamically
- javascript - 如何仅在浏览器Javascript上完成另一个功能后才执行一个功能?
- mongodb - Running a MongoDB in Docker using Compose
- c - Knowing when execvp has finished
- python - 为什么如果 b(list) = 0 ; 打印('空')不起作用?我正在测试一些东西,但发现这条线不起作用