![]() |
1
8
为什么不使用LINQ?
|
![]() |
2
0
我不确定您是否真的需要正则表达式-您可以使用 trie . 表示词典是一个常用的trie应用程序。(我假设你指的是一本字典,比如一系列单词,而不是“关联数组”的意思)。 |
![]() |
3
0
您的意思是将字符串与正则表达式匹配以获得正则表达式匹配吗?或者只是一个文本匹配?换句话说,您要成为这些regex之一的字符串,还是要应用regex的某些数据? 如果它是一个regex,并且您希望在列表中找到它,那么您不需要字典,它们是由两部分组成的容器。您可以使用一个列表或StringCollection,并请求indexof(mytstring),-1,这意味着它不在其中。 |
![]() |
4
0
如果您的regexp不是简单的单个字符串,并且您关心效率,那么您希望将它们表示为单个字符串 NFA (nondeterministic finite-state automaton ,值处于最终状态。如果一个输入可以匹配多个regexp,那么最终状态将需要一组值。 此时,您已经准备好考虑优化自动机。如果它实际上可以被确定(这给了你一个可以比NFA指数大的DFA),那么无论如何都要这样做。一旦您有了一个DFA,您就可以有效地(并且唯一地达到同构)最小化它(但是由于您在最终状态中有值,所以对 usual algorithm 是需要的)。 还有一些直接最小化NFA的技术。例如,如果两个状态具有相同的后缀集((字符串的其余部分,值)),则它们是等效的,可以组合在一起。非循环NFA中的等效可以通过 hash-consing 从最终状态开始。 |
![]() |
5
0
记住,如果您计划多次使用一个regex,您可以在编译时创建一个regex对象,并重新使用它来减少开销。
使用这个模型,您最好存储一个regex对象,而不是模式字符串。 |
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Katia · 根据特定规则进行多行匹配 2 年前 |
![]() |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
![]() |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |