ABAP的匹配

ABAP的匹配

  • 通配符

    1. 字符串操作中的通配符

      • *:多位字符的通配符

      • +:一位字符的通配符

      • #:字符操作中的转义符

        REPORT ztest_placeholder.
        
        DATA:l_name(8) TYPE c VALUE 'ZhangSan'.
        
        * *号是多位的通配符
        IF l_name CP '*San'.
          WRITE: '*:YES'.
        ELSE.
          WRITE: '*:NO'.
        ENDIF.
        
        * +号是一位通配符
        IF l_name CP '+San'.
          WRITE:/ '+:YES'.
        ELSE.
          WRITE:/ '+:NO'.
        ENDIF.
        
        
        

        输出
        *:YES

        +:NO

    2. OPEN SQL where条件中通配符

      • %:多位字符的通配符

      • _:一位字符的通配符

      • ESCAPE:Where条件中转义符

        TABLES:makt.
        SELECT SINGLE *
          FROM makt
         WHERE spras = 1
           AND maktx LIKE '%/_' ESCAPE '/' .
        
        
  • CA,CO,CS,CP

  1. CA(Contain Any)

    str1 ca str2 遍历str1,其中的每个字符对应到str2的每个字符,如果对应成功,注意:只要有一个字符成功,就为true.

    str1 = '我a'.  
    str2 = 'hubab'.
    str1 ca str2 -true
    
  2. CO(Contain Only)

    str1 co str2 遍历str1,其中的每个字符对应到str2的每个字符,如果对应成功,注意:str1中的每一個字符成功,就为true.

    可用于判断是否为数字。ca ‘0123456789’

    str1 = '我a'.  
    str2 = 'hubab'.
    str1 ca str2 -false
    
    str1 = 'ba'.
    str2 = 'hubab'.
    str1 ca str2 -true
    
  3. CS(Contain String)

    str1 cs str2 str1 是否包含str2。

  4. CP(Contain Pattern)

    加入通配符的匹配

    str1 = 'aac'   
    str2 = '#aA#c
    str1 cp str2 -true
    
    str1 = 'aAc'   
    str2 = '#aA#c' 
    str1 cp str2 -true
    
  5. NOTE

    • CO / CN contains only or not

    • CA / NA contains any or not any

    • CS / NS contain string or not

    • CP / NP contains pattern or not

    • CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内

    • CS, NS, CP, NP不区分大小写和尾部空格

    • 比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息

    str1 = '123abc123' 
    str2 = '*abc*'    
    sy-fdpos = 3.
    
  • 使用正则表达式

    ^表示否定

    FIND FIRST OCCURRENCE OF REGEX '[^a-zA-Z]' IN p_input3.
    IF sy-subrc = 0.
        MESSAGE 'There is some non-letter in your input.' TYPE 'E'.
    ENDIF.
    
原文地址:https://www.cnblogs.com/aurora-cj/p/10526286.html