我有一个非常奇怪的问题。我有一个非常大的正则表达式来搜索某些文本中的某些单词(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/