| 
                   | 
                
                  
                    
                      
                      DEELX 正则表达式扩展语法:预搜索
                      回到:目录 | 上一页:非捕获分组 | 下一页:独立表达式 
                       
            预搜索(令宽度断言)
                      判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。 
                       
                      说明
                      预搜索有向前和向后两种: 
                      
                        
                          
                            表达式  | 
                            方向  | 
                            说明  | 
                           
                          
                            | 
                             (?=xxx) 
                             | 
                            正向预搜索(向右)  | 
                            正向预搜索,判断当前位置右侧是否能匹配指定表达式  | 
                           
                          
                            (?!xxx)  | 
                            正向预搜索否定,判断当前位置右侧是否不能够匹配指定表达式  | 
                           
                          
                            (?<=xxx) 
                             | 
                            反向预搜索(向左)  | 
                            反向预搜索,判断当前位置左侧是否能够匹配指定表达式  | 
                           
                          
                            | 
                             (?<!xxx) 
                             | 
                            反向预搜索否定,判断当前位置左侧是否不能够匹配指定表达式  | 
                           
                           
                       
                      在 DEELX 中,不管整个表达式是“普通模式”还是“从右向左”模式,正向预搜索内部的表达式,始终采用“普通模式(从左向右)”模式,反向预搜索内部的表达式,始终采用“从右向左”模式。 
                      “正向预搜索”在各个引擎中的表现基本一致。 
            关于“反向预搜索”中包含的表达式,Perl, Java, GRETA 以及 DEELX 的细节都不相同: 
            
              
                
                  | 
                   引擎  | 
                  
                   说明  | 
                  
                   举例  | 
                 
                
                  | 
                   Perl  | 
                  
                   只能使用固定长度的反向预搜索。  | 
                  
                   (?<=\t)print 
                   | 
                 
                
                  | 
                   Java  | 
                  
                   允许使用不定长度的反向预搜索,但必须要有最大长度。  | 
                  
                   (?<=\{\s{0,100})print 
                   | 
                 
                
                  | 
                   GRETA  | 
                  
                   允许使用没有长度限制,但否定格式存在一些问题。  | 
                  
                   (?<=\{\s*)print 
                   | 
                 
               
             
            DEELX 中的反向预搜索: 
            DEELX 采用 RIGHTTOLEFT 模式来匹配“反向预搜索”中的表达式。使反向预搜索与正向预搜索在逻辑上完全相同,而方向相反。因此,在 DEELX 中,反向预搜索与正向预搜索一样,没有长度限制。 
            比如,在 DEELX 引擎中: 
            
              
                
                  | 
                   文本  | 
                  
                   表达式  | 
                  
                   匹配结果  | 
                 
                
                  | 
                   {print}  | 
                  
                   (?<!\{\s*)print 
                   | 
                  
                   匹配失败  | 
                 
                
                  | 
                   (?<=\{\s*)print 
                   | 
                  
                   匹配成功  | 
                 
               
             
                         | 
                     
                   
                   | 
              
              
                | 
                  
                   |