Regular Expressions in Python

Regular Expressions in Python

String

  • Python nhận dạng bất kỳ chuỗi ký tự nào bên trong dấu ngoặc kép hoặc đơn là một đối tượng

      my_string = "This is string"
      my_string_2 = 'this is string'
      my_string_3 = """It's the string"""
    
  • Length

      my_string = "String python"
      len(my_string)
      ### output: 13
    
  • Convert to string

      str(123)
    
  • Concatenation: +

      my_string1 = "Introduction to"
      my_string2 = "string manipulation"
      print(my_string1 + " " + my_string2)
      ### Introduction to string manipulation
    
  • Indexing & slicing, stride : giống như các ngôn ngữ khác

      my_string = "Introduction to"
      my_string[3] ### r
      my_string[-1] ### 0
      my_string[0:3] ### Int
      my_string[:5] ### Intro
      my_string[5:] ### ion to
      my_string[0:6:2] ### Ito
      my_string[::-1] ###  ot noitcudortnI
    

String Operations

  • Adjusting cases

      my_string = "ThiS iS a NicE StrIng"
      my_string.lower()
      my_string.upper()
      my_string.capitalize()
    
  • Splitting

      my_string = "This string will be split"
      my_string.split(sep=" ", maxsplit=2)
      ### ['this', 'string', 'will be split']
      my_string.rsplit(sep=" ", maxsplit=2)
      ### ['this string will', 'be', 'split']
      my_string_1 = "This string will be split\nin two"
      my_string_1.splitlines()
      ### ['This string will be split', 'in two']
    
  • Joining

      ### sep.join(iterable)
      my_list = ["this", "would", "be", "a", "string"]
      " ".join(my_list)
      ### this would be a string
    
  • Stripping

      my_string = " this string will be stripped\n"
      my_string.strip()
      my_string.rstrip()
      my_string.lstrip()
    

Finding and replacing

  • Finding substrings

      ## string.find(substring,start,end)
      my_string = "where's waldo"
      my_string.find("waldo")  ### 8
      my_string.find("hehe")  ### -1
      my_string.find("waldo", 0, 6)  ### -1
    
      ## string.(substring,start,end)
      my_string.index("waldo")  ### 8
      my_string.index("hehe")  ### Exception error
    
  • Counting occurrences

      ##               string.count(substring,start,end)
    
      my_string = "How many fruits do you have in your fruit basket?"
      my_string.count("fruit") ###  2
      my_string.count("fruit", 0, 16) ###  1
    
  • Replace

      ###               string.replace(old, new, count) 
      my_string = "The red house is between the blue house and the old house" 
      print(my_string.replace("house", "car"))
      ### The red car is between the blue car and the old car
      print(my_string.replace("house", "car", 2))
    

RegEx Python

  • Regular Expression trong Python được thể hiện qua module re, nên việc đầu tiên khi các bạn muốn sử dụng regular expression thì cần phải import module re vào chương trình.

  • Các biểu thức chính quy sẽ tương tự như ở các ngôn ngữ khác, mình chỉ list những pattern thú vị ở dưới đây và các phương thức có trong module re

    Example:

      # Chuỗi có 5 chữ cái, bắt đầu bằng a và kết thúc là s
      pattern = '^a...s$' 
      test_string = 'abyss'
      result = re.match(pattern, test_string)
    
      ### Dấu chấm .
      pattern = '..' # Khớp với bất kỳ đơn vị thông thường nào, trừ `\n`
                     # có 2 ký tự trở lên
      # xuất hiện đầy đủ ký tự, chữ a có thể có nhiều hoặc không.
      pattern = 'ma*n' 
      # xuất hiện đầy đủ ký tự, chữ a có thể có một hoặc nhiều.
      pattern = 'ma+n' 
      # xuất hiện đầy đủ ký tự, chữ a chỉ có thể có một hoặc không.
      pattern = 'ma?n' 
      #xuất hiện 2 và 3 ký tự
      pattern = 'a{2,3}'
    
      ## pattern đi với \
      # \A - Khớp với các ký tự theo sau nó nằm ở đầu chuỗi.
      pattern = '\Athe' #the nằm ở đầu chuỗi
      # \b - Khớp với các ký tự được chỉ định nằm ở đầu hoặc cuối của từ.
      pattern = '\bfoo' #foo nằm ở đầu chuỗi hoặc đầu của từ
      pattern = '\bfoo' #foo nằm ở cuỗi chuỗi hoặc cuối của từ
      # \B - Trái ngược với \b, khớp với các ký tự được chỉ định 
      # không nằm ở đầu hoặc cuối của từ.
    
  • Các Phương thức:

      # Phương thức re.findall()
      string = 'cmon 13 man 89. hehe 34'
      pattern = '\d+'
      re.findall(pattern, string)  # ['13', '89', '34']
    
      # Phương thức re.split()
      string = 'U can tell.'
      pattern = '\s'
      re.split(pattern, string)  ## ['U', 'can', 'tell']
      ## Phương thức re.sub(pattern, replace, string, count)
      string = 'phong 11
      python 22 \n today'
      pattern = '\s+'
      replace = ''
      re.sub(pattern, replace, string)  ## phong11python22today
    
  • Another:

      ## Phương thức re.search()
      string = "Regex in python"
      re.search('\ARegex', string)
    
      # Đối tượng match
      string = '39801 356, 2102 1111'
      pattern = '(\d{3}) (\d{2})'
      ret = re.search(pattern, string)
      ret.group() ## Full group
      ret.group(1) ##  801
      ret.group(2) ##
    
      ## ret.re và ret.string
      ret.re ## re.compile('(\\d{3}) (\\d{2})')
      ret.string ### 23213 111 
    
      ## Tiền tố r trước RegEx
      string = "\n and \r are escape sequences."
      # re.findall(r"[\n\r]", string)  # Output: ["\n", "\r"]
    

WTF, BUG?

End

Note

p.