简体   繁体   English

grep -f的性能问题

[英]Performance issue with grep -f

I'm using grep to search for several regular expressions in a single file. 我正在使用grep在单个文件中搜索几个正则表达式。 In particular, I'm considering a 100 MB file with English subtitles and running the following regular expressions stored in file patterns.txt : 特别是,我正在考虑一个带有英文字幕的100 MB文件,并运行存储在文件patterns.txt中的以下正则表达式:

Cas.*eharden
acr.*otic
syn.*thesizing
sub.*abbot
iss.*acharite
bot.*onne
dis.*similatory
ove.*rmantel
isa.*tin
ado.*nijah
sol.*ution
zei.*st
fam.*ousness
inq.*uisitress
aor.*tography
via.*duct
ama.*sa
der.*ive
pie.*tas
kit.*chenette

While doing so I observed that the time required by grep does not grow linearly with the number of regular expressions. 在这样做时,我观察到grep所需的时间不会与正则表达式的数量呈线性增长。 Indeed, it seems to grow exponentially . 实际上, 它似乎呈指数级增长

Experiments 实验

System: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz; 系统: Intel(R)Core(TM)i5-5200U CPU @ 2.20GHz; 4 Cores; 4个核心; 8 GB RAM 8 GB RAM

Case 1: 20 regexps 案例1:20 regexps

Command grep -c -f patterns.txt subtitles.txt counts 2214 occurrences and takes 命令grep -c -f patterns.txt subtitles.txt计算2214次出现并占用
2,19s user 0,00s system 99% cpu 2,192 total. 2,19s用户0,00s系统99%cpu 2,192总计。

Case 2: 30 regexps 案例2:30 regexps

If I add the following expressions to patterns.txt 如果我将以下表达式添加到patterns.txt

ort.*hros
ove.*ridentify
mis.*tiest
pay.*ne
int.*erchasing
jej.*uneness
sta.*lactiform
und.*ertrain
cob.*bles
Sub.*category

Command grep -c -f patterns.txt subtitles.txt counts 2894 occurrences and takes 71,35s user 0,06s system 99% cpu 1:11,42 total. 命令grep -c -f patterns.txt subtitles.txt计算2894次出现并占用71,35s用户0,06s系统99%cpu 1:11,42总计。

Case 3: 35 regexps 案例3:35个正则表达式

Adding five more expressions: 再添加五个表达式:

dis.*embosom
imp.*ortunateness
ema.*thion
rho.*mb
haz.*elwood

Command grep -c -f patterns.txt subtitles.txt counts 2904 occurrences and takes 211,18s user 0,22s system 99% cpu 3:31,58 total 命令grep -c -f patterns.txt subtitles.txt计算2904次出现并占用211,18s用户0,22s系统99%cpu 3:31,58总计

Why grep -f exhibit such behavior? 为什么grep -f表现出这种行为? What is it doing internally? 它在内部做什么?

The whole set of regexp I've been using can be found here 我一直在使用的整套正则表达式都可以在这里找到

From reading the grep source code, it appears that the regex's in your file are not executed one at a time. 通过阅读grep源代码,您的文件中的正则表达式似乎不会一次执行一个。 Rather, they're read all at once into one big regex: 相反,它们一下子被读成一个大的正则表达式:

case 'f':
  fp = STREQ (optarg, "-") ? stdin : fopen (optarg, O_TEXT ? "rt" : "r");
  if (!fp)
    error (EXIT_TROUBLE, errno, "%s", optarg);
  for (keyalloc = 1; keyalloc <= keycc + 1; keyalloc *= 2)
    ;
  keys = xrealloc (keys, keyalloc);
  oldcc = keycc;
  while ((cc = fread (keys + keycc, 1, keyalloc - 1 - keycc, fp)) != 0)
    {
      keycc += cc;
      if (keycc == keyalloc - 1)
        keys = x2nrealloc (keys, &keyalloc, sizeof *keys);
    }

This is confirmed watching an strace of grep run on your command: 这是确认看到你的命令运行grep strace

open("testreg", O_RDONLY)               = 3
fstat(3, {st_mode=S_IFREG|0664, st_size=124, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd8912fe000
read(3, "ort.*hros\nove.*ridentify\nmis.*ti"..., 4096) = 124

Backtracking regex implementations (which allow backreferences), do not run in O(n) time, but rather O(2^m), which can lead to catastrophic runtimes. 回溯正则表达式实现(允许反向引用),不在O(n)时间运行,而是在O(2 ^ m)运行,这可能导致灾难性的运行时。

Your assumption that grep is simply looping over each regex in turn, compiling each into a DFA and then executing it is perfectly reasonable. 你假设grep只是依次遍历每个正则表达式,将每个正则表达式编译成DFA然后执行它是完全合理的。 However, it appears that the grep authors have assumed that by running your regex's all at once, they can probably do so more efficiently in some cases. 然而,似乎grep作者假设通过一次运行你的正则表达式,他们可能在某些情况下更有效地这样做。 The result is that by adding regex's to your file, you're falling into the O(2^m) runtime, resulting in an exponential increase in your runtime. 结果是,通过将正则表达式添加到您的文件中,您将进入O(2 ^ m)运行时,从而导致运行时呈指数级增长。

As it turns out, it may be more efficient to simply loop over each regex executing them one at a time, forcing your grep to run linearly. 事实证明,简单地循环遍历执行它们的每个正则表达式可能会更有效,从而迫使grep线性运行。 On my laptop, running grep version 2.20, I get the following results using only the last 29 regex's in the file you provided: 在我的笔记本电脑上,运行grep版本2.20,我只使用你提供的文件中的最后29个正则表达式得到以下结果:

[Downloads]$ wc -l patterns.txt 
29 patterns.txt

[Downloads]$ time grep -c -f ~/Downloads/patterns.txt /usr/share/dict/linux.words 
117

real    0m3.092s
user    0m3.027s
sys     0m0.047s

[csd@alcazar Downloads]$ time for regex in `cat ~/Downloads/patterns.txt`; do grep -c $regex /usr/share/dict/linux.words > /dev/null; done
real    0m0.474s
user    0m0.312s
sys     0m0.158s

I'm a little late to this but want to try to clarify what the problem is. 我有点晚了,但想试着澄清问题所在。
First off, the .* should never span newlines, ever !! 首先, .* 永远不应该跨越换行!

Right out of the gate, you should never use separate regex that scan 在门外,你不应该使用单独的正则扫描
the same target text territory (an entirely separate topic). 相同的目标文本区域(完全独立的主题)。

Ok, so at this point we are down to something doable. 好的,所以在这一点上我们可以做到可行的事情。

We have a choice when constructing and combining regex's. 在构建和组合正则表达式时我们有一个选择。
We can make each one a separate alternation for sure. 我们可以确保每一个单独交替。
But, if we have a large number of mostly literal regexes, this will 但是,如果我们有大量文字正则表达式,这将
cause problems. 引起问题。

Consider a regex trie consisting of mostly alphanumeric characters. 考虑一个正则表达式特里最多包含字母数字字符。
On the outer alternation level we only want to give the engine a maximum 在外部交替级别,我们只想给发动机一个最大值
of 26 pathways for the engine to traverse. 发动机横穿的26个通道。
As we move to the secondary level (within each path) we want to give 当我们移动到二级(在每条路径内)时,我们想要给予
the engine another 26 max pathways. 引擎另外26个最大路径。
This choice happens again for those pathways, and each child pathway, etc... 对于那些途径,每个儿童途径等,这种选择再次发生......

This is the definition of a full blown, multi-level regex trie . 这是一个完全成熟的,多层次的正则表达式线索的定义。
This greatly reduces the number of steps to a match, as I will show below. 这大大减少了匹配的步骤数,如下所示。

I've taken your patterns.txt and made two types of expressions. 我已经采用了你的patterns.txt并制作了两种表达方式。
One without a trie, one with. 一个没有特里,一个没有

You have 580 separate patterns we will combine. 你有580个独立的模式我们将结合起来。
In the one without a trie, that makes 580 outer level pathways. 在没有特里结构的那个中,有580个外层通道。
In the one with a trie, it makes 25 pathway. 在具有特里的那个中,它形成了25个路径。
Just that alone represents a 20 to 1 difference in speed. 仅仅这一点就代表了20到1的速度差异。

Moving on, we go further and create all the sub-path trie's for each level. 继续,我们进一步为每个级别创建所有子路径trie。
This shaves another 10-30x in time doing this. 这样可以在另外10-30倍的时间内完成这项工作。

Your patterns are mostly uniform in that they each have a 3 letter constant 你的模式大多是统一的,因为它们每个都有一个3个字母的常量
before the greedy quantifier .* . 在贪婪量词之前.*
After which, the sub-trie's are still constructed, but at this point are of 在此之后,仍然构建了子系列,但此时的结构是
minor affect. 轻微的影响。

I've used the RegexFormat 8 utility called 我使用了RegexFormat 8实用程序
Strings to Regex - Ternary Tree which generates full blown trie's 字符串的正则表达式-三叉树产生饱吹特里的
from string literals. 来自字符串文字。

I am comparing this generated regex to the unaltered pattern list 我将这个生成的正则表达式与未改变的模式列表进行比较
regexes, in which I combined by added an alternation between each regex. 正则表达式,我在其中加入了每个正则表达式之间的交替。

For the test sample, I used half of your 对于测试样本,我使用了一半
100 MB file with English subtitles
which was about 50 MB. 这大约是50 MB。
The test was conducted with the RegexFormat 8, built-in Benchmark Utility . 该测试使用RegexFormat 8,内置Benchmark Utility进行

Regex1 is the full-blown generated trie. Regex1是完整的生成trie。
Regex2 is non-trie version. Regex2是非trie版本。

Each regex matched 36,776 items in the 50MB target. 每个正则表达式在50MB目标中匹配36,776个项目。
The times however, are quite different. 然而,时代却截然不同。

Results: 结果:

Regex1:   (?:A(?:gr.*iology|nk.*let|tt.*ributive)|Bow.*ls|Cas.*eharden|Iso.*propyl|L(?:ab.*ella|ic.*htenberg)|Neu.*stic|Oro.*nasally|Pen.*stemon|R(?:e(?:i.*nspiration|p.*rovable)|up.*ee)|S(?:hi.*gellae|te.*rlet|ub.*(?:category|epithelial))|Vit.*alian|Wer.*e|a(?:c(?:a.*demic|e.*t(?:aldol|ylation)|h.*enial|i.*dimeter|r.*otic)|d(?:e.*nosarcomata|m.*easurer|o.*nijah)|ec.*ium|ir.*less|l(?:e.*xandroupolis|k.*alisation|l.*owable|m.*swomen)|m(?:a.*sa|n.*esic|y.*xorrhea)|n(?:c.*one|e.*mogram|g.*elical|o.*(?:ciassociation|le)|t.*imechanistic)|or.*tography|p(?:i.*sh|o.*carpous|ï.*¿¥ï¾½ritif)|r(?:c.*hipelagic|m.*ored|n.*oldson|y.*balloid)|s(?:c.*endent|t.*ound)|tt.*ainder|u(?:d.*ience|s.*tralioid|t.*ostoper)|va.*re|zi.*muthal)|b(?:a(?:b.*ette|l.*let|n.*galay|r.*(?:a|racuda|tolozzi))|e(?:a.*dsman|r.*(?:dache|nardsville))|is.*ymmetrically|la.*ckbuck|o(?:b.*owler|g.*(?:hazk¥ᄀy|omilism)|o.*mingly|r.*onic|t.*onne|u.*rbonnais)|r(?:i.*olette|o.*(?:minate|wne)|y.*ophytic)|ui.*ldup)|c(?:a(?:j.*ole|r.*teret|s.*sie|t.*(?:awba|hexes))|e(?:n.*(?:serless|tralist)|r.*(?:emoniously|tify))|h(?:a.*nduy|l.*orohydrin|o.*ya|r.*omoplast)|li.*(?:ckless|ntonville|toridean)|o(?:b.*bles|c.*kaded|g.*itable|h.*esiveness|l.*(?:lectivise|onially|umba)|n.*(?:gregativeness|strictive|tortion|vulsive)|r.*deliers|ï.*¿¥ï¾¡peratively)|r(?:a.*ckers|c.*hes|e.*stline|o.*(?:akier|uton))|u(?:l.*turist|r.*bless)|ï¿.*¥ï¾½dula)|d(?:''.*s|a(?:m.*selfishes|n.*dier)|e(?:a.*minize|f.*enseless|h.*umanize|m.*ulsifying|r.*(?:ive|mabrasion)|s.*(?:de|iderative)|v.*(?:a|olatilizing))|i(?:a.*dochy|h.*ydromorphinone|p.*lomatical|s.*(?:e(?:mbosom|nfranchisement|stablish)|similatory|tinguished|yllabize)|v.*ulgement)|o(?:l.*phinfishes|o.*rstep|r.*ter)|r(?:a.*(?:gonhead|maturge)|e.*ssing|u.*dging)|ul.*cimer)|e(?:as.*iness|co.*nometrician|ff.*ortful|l(?:e.*git|o.*ign)|m(?:a.*thion|e.*ndatory)|pi.*zoite|qu.*ipoise|st.*afette|th.*(?:nolinguistics|yl(?:ated|dichloroarsine))|x(?:c.*uss|h.*umed|p.*(?:andible|iable|ostulation)|t.*ravasating)|yc.*k)|f(?:a(?:m.*ousness|n.*tasied)|e(?:l.*ony|r.*(?:rotype|vidly)|w.*er)|i(?:l.*ial|s.*her)|l(?:a.*m(?:b¥ᄑ|eproof)|e.*et)|o(?:r.*(?:dyce|mularize)|z.*iness)|re.*ak|u(?:n.*goid|r.*ry))|g(?:a(?:l.*(?:act(?:in|oid)|vanically|way)|s.*(?:ifier|trostomy)|u.*(?:l|ssmeter))|e(?:g.*enion|n.*(?:eseo|ista)|o.*phyte|s.*tative)|in.*gili|lo.*(?:be|ssary)|o(?:d.*(?:hood|liest)|l.*dberg)|r(?:a.*(?:n(?:ddaddy|ulating)|vimetry)|e.*endale)|ua.*iacum|wy.*dion)|h(?:a(?:l.*lmark|r.*d(?:handed|ly)|s.*tefully|t.*shepset|z.*elwood)|e(?:a.*rt(?:eningly|sick)|c.*tometre|m.*atoid|p.*tode|t.*erodactyl|u.*neburg)|id.*eout|o(?:n.*orius|p.*s|r.*(?:nbeam|ribly)|v.*elled)|u(?:n.*k|r.*ricane)|y(?:o.*scine|p.*othallus))|i(?:d(?:e.*ler|m.*on)|ll.*iquidly|m(?:m.*obilize|p.*(?:ort(?:antly|unateness)|udently))|n(?:a.*dequacy|c.*linable|d.*ustrialised|e.*quitable|f.*ringer|g.*rate|q.*uisitress|t.*(?:er(?:aural|belligerent|chasing|hybridized|mundane)|ranuclear))|od.*ise|r(?:e.*nical|k.*someness|r.*uptively)|s(?:a.*tin|s.*acharite))|j(?:a(?:i.*na|m.*aican)|e(?:a.*n|d.*burgh|j.*uneness|w.*ishness)|id.*da|ud.*ea)|k(?:am.*seen|ea.*nsburg|i(?:l.*obaud|t.*chenette)|la.*nism|on.*a|uw.*ait)|l(?:ac.*unaria|i(?:e.*der|m.*acine|n.*us|q.*uer|s.*tlessly)|o(?:c.*k|g.*(?:iciz(?:e|ing)|ographer))|u(?:k.*s|m.*inal)|ym.*phogranulomata)|m(?:a(?:m.*al(?:lapuram|uke)|r.*(?:acanda|or)|s.*sys)|ca.*llen|e(?:i.*lhac|t.*hylate)|i(?:n.*imalist|s.*(?:a(?:nalyzing|uthorizing)|ce|quoting|shipping|tiest)|t.*tatur)|on.*othelitic|u(?:l.*ti(?:chrome|volumed)|s.*siest))|n(?:at.*atoriums|e(?:c.*rologically|m.*o|o.*styled|p.*hritic|t.*tlelike|u.*roglial|w.*fangledly)|o(?:g.*gin|n.*(?:a(?:mendment|scetic|ttachment)|dilution|knowledgeable|narrative|receptive|s(?:a(?:cramental|linity)|ecrecy|tability|uspended))|r.*mandy|u.*akchott)|ur.*turable)|o(?:li.*o|p(?:e.*nairness|h.*thalmoscopy|s.*onin)|r(?:a.*cles|i.*entally|o.*logist|t.*hros)|sc.*illator|u(?:s.*el|t.*(?:chasing|drew|echoing))|ve.*r(?:glad|hang|i(?:dentify|mpressibility|ntensified)|m(?:antel|uch)|spacious|thriftiness)|wl.*ishness|xy.*genicity)|p(?:a(?:r.*(?:a(?:professional|tences)|entalia)|y.*ne)|e(?:d.*al|e.*p|n.*(?:etrableness|u(?:mbra|rious))|r.*(?:ches|istaltically))|h(?:i.*landerer|o.*(?:nautograph|to(?:n|static)))|i(?:c.*nicking|e.*tas|n.*gr|p.*pin)|la.*yday|ne.*umoencephalogram|o(?:o.*fter|p.*sy)|r(?:e.*(?:a(?:cceptance|ffiliated|ging)|con(?:flict|triving)|d(?:eprive|is(?:ciplined|guise))|expeditionary|historically|insult|judger|pense|s(?:entimental|u(?:bscription|itable))|t(?:ry|ypify))|o.*(?:fligateness|mulger|t(?:eid|oplasmic)))|se.*udo(?:cele|nymous)|u(?:b.*licized|i.*rness|n.*ctualness|r.*sing|t.*rilaginous)|yx.*is)|qu(?:a.*rreler|i.*st|o.*dlibetically)|r(?:a(?:d.*iotelemetry|g.*gedy)|e(?:c.*(?:ampaign|umbent)|d.*ominating|e.*xpose|f.*ulgentness|i.*(?:maged|nhardt|temized)|m.*ontoire|o.*rientating|p.*(?:e(?:llant|n)|lunging)|s.*hook|t.*(?:elegraph|ral)|v.*ocableness)|h(?:i.*naria|o.*mb)|i(?:d.*dle|f.*leman)|o(?:d.*eo|l.*lo|u.*che|y.*ce))|s(?:a(?:l.*ic|n.*(?:ctimonious|d))|c(?:e.*ptic|o.*ttish|r.*u(?:ffiest|mpy)|u.*lptor)|e(?:l.*ves|p.*arator)|h(?:e.*lbyville|i.*pboard|o.*shone)|in.*(?:cerely|gularise)|lo.*wpoke|m(?:i.*dgin|o.*keproof)|o(?:l.*ution|p.*rano|r.*(?:bian|rento)|u.*thwest)|p(?:a.*lato|i.*nning|r.*itehood)|t(?:a.*(?:lactiform|minodia|ndish|toblast)|e.*rope|i.*lyaga)|u(?:b.*(?:abbot|extensible|foliation|jectional|preceptorial|stantialness|tegumental)|k.*arnapura|l.*liable|n.*ward|p.*eracquisition)|wi.*m|yn.*thesizing)|t(?:a(?:l.*kie|t.*tooed)|e(?:l.*e(?:cast|g|ran)|n.*sionless|r.*minatory|t.*radrachm)|h(?:e.*(?:ban|r(?:m(?:alize|obarograph)|ophyte)|spian)|i.*osinamine)|ig.*r¥ᄑ|o(?:n.*eless|r.*ulosis)|ra.*(?:lles|pani)|u(?:m.*idity|n.*eableness)|w(?:e.*enies|o.*three)|y(?:l.*er|p.*ewrote))|u(?:lt.*raviruses|n(?:b.*(?:esmirched|oring)|c.*o(?:mmitted|n(?:fronted|tr(?:asted|ibutory)))|d.*(?:e(?:based|r(?:framework|nourish|populated|train))|ischarged|rowned)|e.*xceeded|f.*orgeability|g.*(?:oaded|roupable)|l.*oyalty|m.*ounting|o.*ceanic|p.*(?:erishing|hlegmatic|recocious)|r.*e(?:ached|counted|solvable)|s.*(?:e(?:parative|rrate)|hadowable|ilicified|l(?:immed|uiced)|naky|pelt|t(?:ealthy|oppably)|werving)|t.*(?:heistical|r(?:ansparent|ustworthy))|u.*seful|w.*hisked)|p(?:b.*ear|p.*ercutting)|rs.*ula)|v(?:a(?:l.*ois|p.*orize|r.*as|t.*ican)|er.*us|i(?:a.*duct|c.*tualing|l.*lose)|ul.*canizer)|w(?:a(?:r.*rington|x.*y)|e(?:a.*rability|s.*termarck)|he.*rrit|i(?:s.*teria|t.*hy)|ul.*fenite)|y(?:es.*enin|ol.*ande)|z(?:e(?:b.*ec|i.*st|l.*os)|on.*ule))
Options:  < none >
Completed iterations:   1  /  1     ( x 1 )
Matches found per iteration:   36776
Elapsed Time:    19.94 s,   19936.96 ms,   19936963 µs


Regex2:   (?:Cas.*eharden|acr.*otic|... (truncated)
Options:  < none >
Completed iterations:   1  /  1     ( x 1 )
Matches found per iteration:   36776
Elapsed Time:    299.74 s,   299735.86 ms,   299735857 µs

The regex is better seen when formatted (expanded). 格式化(扩展)时可以更好地看到正则表达式。

Conclusion - I recommend using a full blown trie which will cure your 结论 - 我建议使用完全吹制的三通 ,这将治愈你的
latency problem's. 延迟问题。

Good luck !! 祝好运 !!
If you have any questions, feel free to ask. 如果你有任何问题随时问。

(?:
    A
    (?:
        gr .* iology
      | nk .* let
      | tt .* ributive 
    )
  | Bow .* ls
  | Cas .* eharden
  | Iso .* propyl
  | L
    (?: ab .* ella | ic .* htenberg )
  | Neu .* stic
  | Oro .* nasally
  | Pen .* stemon
  | R
    (?:
        e
        (?: i .* nspiration | p .* rovable )
      | up .* ee
    )
  | S
    (?:
        hi .* gellae
      | te .* rlet
      | ub .* 
        (?: category | epithelial )
    )
  | Vit .* alian
  | Wer .* e
  | a
    (?:
        c
        (?:
            a .* demic
          | e .* t
            (?: aldol | ylation )
          | h .* enial
          | i .* dimeter
          | r .* otic
        )
      | d
        (?:
            e .* nosarcomata
          | m .* easurer
          | o .* nijah
        )
      | ec .* ium
      | ir .* less
      | l
        (?:
            e .* xandroupolis
          | k .* alisation
          | l .* owable
          | m .* swomen
        )
      | m
        (?: a .* sa | n .* esic | y .* xorrhea )
      | n
        (?:
            c .* one
          | e .* mogram
          | g .* elical
          | o .* 
            (?: ciassociation | le )
          | t .* imechanistic
        )
      | or .* tography
      | p
        (?:
            i .* sh
          | o .* carpous
          | ï .* ¿¥ï¾½ritif 
        )
      | r
        (?:
            c .* hipelagic
          | m .* ored
          | n .* oldson
          | y .* balloid
        )
      | s
        (?: c .* endent | t .* ound )
      | tt .* ainder
      | u
        (?:
            d .* ience
          | s .* tralioid
          | t .* ostoper 
        )
      | va .* re
      | zi .* muthal
    )
  | b
    (?:
        a
        (?:
            b .* ette
          | l .* let
          | n .* galay
          | r .* 
            (?: a | racuda | tolozzi )
        )
      | e
        (?:
            a .* dsman
          | r .* 
            (?: dache | nardsville )
        )
      | is .* ymmetrically
      | la .* ckbuck
      | o
        (?:
            b .* owler
          | g .* 
            (?: hazk¥ᄀy | omilism )
          | o .* mingly
          | r .* onic
          | t .* onne
          | u .* rbonnais
        )
      | r
        (?:
            i .* olette
          | o .* 
            (?: minate | wne )
          | y .* ophytic
        )
      | ui .* ldup
    )
  | c
    (?:
        a
        (?:
            j .* ole
          | r .* teret
          | s .* sie
          | t .* 
            (?: awba | hexes )
        )
      | e
        (?:
            n .* 
            (?: serless | tralist )
          | r .* 
            (?: emoniously | tify )
        )
      | h
        (?:
            a .* nduy
          | l .* orohydrin
          | o .* ya
          | r .* omoplast
        )
      | li .* 
        (?: ckless | ntonville | toridean )
      | o
        (?:
            b .* bles
          | c .* kaded
          | g .* itable
          | h .* esiveness
          | l .* 
            (?: lectivise | onially | umba )
          | n .* 
            (?:
                gregativeness
              | strictive
              | tortion
              | vulsive 
            )
          | r .* deliers
          | ï .* ¿¥ï¾¡peratively
        )
      | r
        (?:
            a .* ckers
          | c .* hes
          | e .* stline
          | o .* 
            (?: akier | uton )
        )
      | u
        (?: l .* turist | r .* bless )
      | ï¿ .* ¥ï¾½dula
    )
  | d
    (?:
        '' .* s
      | a
        (?: m .* selfishes | n .* dier )
      | e
        (?:
            a .* minize
          | f .* enseless
          | h .* umanize
          | m .* ulsifying
          | r .* 
            (?: ive | mabrasion )
          | s .* 
            (?: de | iderative )
          | v .* 
            (?: a | olatilizing )
        )
      | i
        (?:
            a .* dochy
          | h .* ydromorphinone
          | p .* lomatical
          | s .* 
            (?:
                e
                (?: mbosom | nfranchisement | stablish )
              | similatory
              | tinguished
              | yllabize
            )
          | v .* ulgement
        )
      | o
        (?:
            l .* phinfishes
          | o .* rstep
          | r .* ter 
        )
      | r
        (?:
            a .* 
            (?: gonhead | maturge )
          | e .* ssing
          | u .* dging
        )
      | ul .* cimer
    )
  | e
    (?:
        as .* iness
      | co .* nometrician
      | ff .* ortful
      | l
        (?: e .* git | o .* ign )
      | m
        (?: a .* thion | e .* ndatory )
      | pi .* zoite
      | qu .* ipoise
      | st .* afette
      | th .* 
        (?:
            nolinguistics
          | yl
            (?: ated | dichloroarsine )
        )
      | x
        (?:
            c .* uss
          | h .* umed
          | p .* 
            (?: andible | iable | ostulation )
          | t .* ravasating
        )
      | yc .* k
    )
  | f
    (?:
        a
        (?: m .* ousness | n .* tasied )
      | e
        (?:
            l .* ony
          | r .* 
            (?: rotype | vidly )
          | w .* er
        )
      | i
        (?: l .* ial | s .* her )
      | l
        (?:
            a .* m
            (?: b¥ᄑ | eproof )
          | e .* et
        )
      | o
        (?:
            r .* 
            (?: dyce | mularize )
          | z .* iness
        )
      | re .* ak
      | u
        (?: n .* goid | r .* ry )
    )
  | g
    (?:
        a
        (?:
            l .* 
            (?:
                act
                (?: in | oid )
              | vanically
              | way
            )
          | s .* 
            (?: ifier | trostomy )
          | u .* 
            (?: l | ssmeter )
        )
      | e
        (?:
            g .* enion
          | n .* 
            (?: eseo | ista )
          | o .* phyte
          | s .* tative
        )
      | in .* gili
      | lo .* 
        (?: be | ssary )
      | o
        (?:
            d .* 
            (?: hood | liest )
          | l .* dberg
        )
      | r
        (?:
            a .* 
            (?:
                n
                (?: ddaddy | ulating )
              | vimetry
            )
          | e .* endale
        )
      | ua .* iacum
      | wy .* dion
    )
  | h
    (?:
        a
        (?:
            l .* lmark
          | r .* d
            (?: handed | ly )
          | s .* tefully
          | t .* shepset
          | z .* elwood
        )
      | e
        (?:
            a .* rt
            (?: eningly | sick )
          | c .* tometre
          | m .* atoid
          | p .* tode
          | t .* erodactyl
          | u .* neburg
        )
      | id .* eout
      | o
        (?:
            n .* orius
          | p .* s
          | r .* 
            (?: nbeam | ribly )
          | v .* elled
        )
      | u
        (?: n .* k | r .* ricane )
      | y
        (?: o .* scine | p .* othallus )
    )
  | i
    (?:
        d
        (?: e .* ler | m .* on )
      | ll .* iquidly
      | m
        (?:
            m .* obilize
          | p .* 
            (?:
                ort
                (?: antly | unateness )
              | udently
            )
        )
      | n
        (?:
            a .* dequacy
          | c .* linable
          | d .* ustrialised
          | e .* quitable
          | f .* ringer
          | g .* rate
          | q .* uisitress
          | t .* 
            (?:
                er
                (?:
                    aural
                  | belligerent
                  | chasing
                  | hybridized
                  | mundane
                )
              | ranuclear
            )
        )
      | od .* ise
      | r
        (?:
            e .* nical
          | k .* someness
          | r .* uptively 
        )
      | s
        (?: a .* tin | s .* acharite )
    )
  | j
    (?:
        a
        (?: i .* na | m .* aican )
      | e
        (?:
            a .* n
          | d .* burgh
          | j .* uneness
          | w .* ishness
        )
      | id .* da
      | ud .* ea
    )
  | k
    (?:
        am .* seen
      | ea .* nsburg
      | i
        (?: l .* obaud | t .* chenette )
      | la .* nism
      | on .* a
      | uw .* ait
    )
  | l
    (?:
        ac .* unaria
      | i
        (?:
            e .* der
          | m .* acine
          | n .* us
          | q .* uer
          | s .* tlessly
        )
      | o
        (?:
            c .* k
          | g .* 
            (?:
                iciz
                (?: e | ing )
              | ographer
            )
        )
      | u
        (?: k .* s | m .* inal )
      | ym .* phogranulomata
    )
  | m
    (?:
        a
        (?:
            m .* al
            (?: lapuram | uke )
          | r .* 
            (?: acanda | or )
          | s .* sys
        )
      | ca .* llen
      | e
        (?: i .* lhac | t .* hylate )
      | i
        (?:
            n .* imalist
          | s .* 
            (?:
                a
                (?: nalyzing | uthorizing )
              | ce
              | quoting
              | shipping
              | tiest
            )
          | t .* tatur
        )
      | on .* othelitic
      | u
        (?:
            l .* ti
            (?: chrome | volumed )
          | s .* siest
        )
    )
  | n
    (?:
        at .* atoriums
      | e
        (?:
            c .* rologically
          | m .* o
          | o .* styled
          | p .* hritic
          | t .* tlelike
          | u .* roglial
          | w .* fangledly
        )
      | o
        (?:
            g .* gin
          | n .* 
            (?:
                a
                (?: mendment | scetic | ttachment )
              | dilution
              | knowledgeable
              | narrative
              | receptive
              | s
                (?:
                    a
                    (?: cramental | linity )
                  | ecrecy
                  | tability
                  | uspended
                )
            )
          | r .* mandy
          | u .* akchott
        )
      | ur .* turable
    )
  | o
    (?:
        li .* o
      | p
        (?:
            e .* nairness
          | h .* thalmoscopy
          | s .* onin
        )
      | r
        (?:
            a .* cles
          | i .* entally
          | o .* logist
          | t .* hros
        )
      | sc .* illator
      | u
        (?:
            s .* el
          | t .* 
            (?: chasing | drew | echoing )
        )
      | ve .* r
        (?:
            glad
          | hang
          | i
            (?: dentify | mpressibility | ntensified )
          | m
            (?: antel | uch )
          | spacious
          | thriftiness
        )
      | wl .* ishness
      | xy .* genicity
    )
  | p
    (?:
        a
        (?:
            r .* 
            (?:
                a
                (?: professional | tences )
              | entalia
            )
          | y .* ne
        )
      | e
        (?:
            d .* al
          | e .* p
          | n .* 
            (?:
                etrableness
              | u
                (?: mbra | rious )
            )
          | r .* 
            (?: ches | istaltically )
        )
      | h
        (?:
            i .* landerer
          | o .* 
            (?:
                nautograph
              | to
                (?: n | static )
            )
        )
      | i
        (?:
            c .* nicking
          | e .* tas
          | n .* gr
          | p .* pin 
        )
      | la .* yday
      | ne .* umoencephalogram
      | o
        (?: o .* fter | p .* sy )
      | r
        (?:
            e .* 
            (?:
                a
                (?: cceptance | ffiliated | ging )
              | con
                (?: flict | triving )
              | d
                (?:
                    eprive
                  | is
                    (?: ciplined | guise )
                )
              | expeditionary
              | historically
              | insult
              | judger
              | pense
              | s
                (?:
                    entimental
                  | u
                    (?: bscription | itable )
                )
              | t
                (?: ry | ypify )
            )
          | o .* 
            (?:
                fligateness
              | mulger
              | t
                (?: eid | oplasmic )
            )
        )
      | se .* udo
        (?: cele | nymous )
      | u
        (?:
            b .* licized
          | i .* rness
          | n .* ctualness
          | r .* sing
          | t .* rilaginous
        )
      | yx .* is
    )
  | qu
    (?:
        a .* rreler
      | i .* st
      | o .* dlibetically 
    )
  | r
    (?:
        a
        (?: d .* iotelemetry | g .* gedy )
      | e
        (?:
            c .* 
            (?: ampaign | umbent )
          | d .* ominating
          | e .* xpose
          | f .* ulgentness
          | i .* 
            (?: maged | nhardt | temized )
          | m .* ontoire
          | o .* rientating
          | p .* 
            (?:
                e
                (?: llant | n )
              | lunging
            )
          | s .* hook
          | t .* 
            (?: elegraph | ral )
          | v .* ocableness
        )
      | h
        (?: i .* naria | o .* mb )
      | i
        (?: d .* dle | f .* leman )
      | o
        (?:
            d .* eo
          | l .* lo
          | u .* che
          | y .* ce 
        )
    )
  | s
    (?:
        a
        (?:
            l .* ic
          | n .* 
            (?: ctimonious | d )
        )
      | c
        (?:
            e .* ptic
          | o .* ttish
          | r .* u
            (?: ffiest | mpy )
          | u .* lptor
        )
      | e
        (?: l .* ves | p .* arator )
      | h
        (?:
            e .* lbyville
          | i .* pboard
          | o .* shone 
        )
      | in .* 
        (?: cerely | gularise )
      | lo .* wpoke
      | m
        (?: i .* dgin | o .* keproof )
      | o
        (?:
            l .* ution
          | p .* rano
          | r .* 
            (?: bian | rento )
          | u .* thwest
        )
      | p
        (?: a .* lato | i .* nning | r .* itehood )
      | t
        (?:
            a .* 
            (?: lactiform | minodia | ndish | toblast )
          | e .* rope
          | i .* lyaga
        )
      | u
        (?:
            b .* 
            (?:
                abbot
              | extensible
              | foliation
              | jectional
              | preceptorial
              | stantialness
              | tegumental
            )
          | k .* arnapura
          | l .* liable
          | n .* ward
          | p .* eracquisition
        )
      | wi .* m
      | yn .* thesizing
    )
  | t
    (?:
        a
        (?: l .* kie | t .* tooed )
      | e
        (?:
            l .* e
            (?: cast | g | ran )
          | n .* sionless
          | r .* minatory
          | t .* radrachm
        )
      | h
        (?:
            e .* 
            (?:
                ban
              | r
                (?:
                    m
                    (?: alize | obarograph )
                  | ophyte
                )
              | spian
            )
          | i .* osinamine
        )
      | ig .* r¥ᄑ
      | o
        (?: n .* eless | r .* ulosis )
      | ra .* 
        (?: lles | pani )
      | u
        (?: m .* idity | n .* eableness )
      | w
        (?: e .* enies | o .* three )
      | y
        (?: l .* er | p .* ewrote )
    )
  | u
    (?:
        lt .* raviruses
      | n
        (?:
            b .* 
            (?: esmirched | oring )
          | c .* o
            (?:
                mmitted
              | n
                (?:
                    fronted
                  | tr
                    (?: asted | ibutory )
                )
            )
          | d .* 
            (?:
                e
                (?:
                    based
                  | r
                    (?:
                        framework
                      | nourish
                      | populated
                      | train 
                    )
                )
              | ischarged
              | rowned
            )
          | e .* xceeded
          | f .* orgeability
          | g .* 
            (?: oaded | roupable )
          | l .* oyalty
          | m .* ounting
          | o .* ceanic
          | p .* 
            (?: erishing | hlegmatic | recocious )
          | r .* e
            (?: ached | counted | solvable )
          | s .* 
            (?:
                e
                (?: parative | rrate )
              | hadowable
              | ilicified
              | l
                (?: immed | uiced )
              | naky
              | pelt
              | t
                (?: ealthy | oppably )
              | werving
            )
          | t .* 
            (?:
                heistical
              | r
                (?: ansparent | ustworthy )
            )
          | u .* seful
          | w .* hisked
        )
      | p
        (?: b .* ear | p .* ercutting )
      | rs .* ula
    )
  | v
    (?:
        a
        (?:
            l .* ois
          | p .* orize
          | r .* as
          | t .* ican 
        )
      | er .* us
      | i
        (?: a .* duct | c .* tualing | l .* lose )
      | ul .* canizer
    )
  | w
    (?:
        a
        (?: r .* rington | x .* y )
      | e
        (?: a .* rability | s .* termarck )
      | he .* rrit
      | i
        (?: s .* teria | t .* hy )
      | ul .* fenite
    )
  | y
    (?: es .* enin | ol .* ande )
  | z
    (?:
        e
        (?: b .* ec | i .* st | l .* os )
      | on .* ule
    )
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM