c# - 预编译一个非常大的正则表达式

标签 c# vb.net regex compiled

我有一个非常奇怪的问题。我有一个非常大的正则表达式来搜索某些文本中的某些单词(RegEx 看起来像这样:(?i)\b(a|b|c|d...)\b; 和依此类推,其中 a、b、c、d 代表单词)。不管怎样,我把它放在一个预编译的程序集中来加快速度,但问题是预编译的正则表达式与相同正则表达式的非编译版本的工作方式不同...... o_0

例如,如果正则表达式是:(?i)\b(he|desk)\b 并且我通过它传递“helpdesk”,预编译版本返回“lp”,所以 he并且桌面被 strip 化,好像边界条件根本不起作用,但是如果我确实使用完全相同的正则表达式非预编译版本它工作得很好...... 有谁知道我是否遗漏了什么?

谢谢

(抱歉使用 VB.Net 和 C#)

最佳答案

既然您要搜索整个单词,那么搜索 \w+ 并检查该单词是否在一个集合中如何?基于散列的集合或散列映射在这里可以很好地工作。如果需要,这种方法可以更轻松地更新列表。

关于c# - 预编译一个非常大的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362269/

相关文章:

C#计算美元面额

mysql - 连接必须有效并在 vb 2008 中打开

javascript - 如何使用正则表达式匹配多个值返回单个值?

java - 如果 java Regex 中的常量值与该 Regex 匹配,则将其替换为其他值

php - 如何在随机位置精确匹配 [A-Za-z]?

c# - 等待导航 Pushasync?

c# - WPF:如何使用数据触发器(或等效项)交换 Listview 单元格内容

c# - 扩展方法不适用于 int?

vb.net - SSH.NET 的 SFTP 进度

c# - 使用免注册 com 激活(基于 COM Interop 的)ActiveX 控件