re 模块 关于""分组和"或"匹配的小练习

关于分组优先以及 " | " 的细致练习

from django.test import TestCase
import re

# Create your tests here.
ret = re.findall(r"-?\d+\.\d*|-?\d+", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['1', '-2', '60', '-40.35', '5', '-4', '3']

ret = re.findall(r"-?\d+\.\d*|(-?\d+)", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['1', '-2', '60', '', '5', '-4', '3']

ret = re.findall(r"-?\d+|-?\d+\.\d*", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['1', '-2', '60', '-40', '35', '5', '-4', '3']

ret = re.findall(r"-?\d+|(-?\d+\.\d*)", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['', '', '', '', '', '', '', '']

ret = re.findall(r"(-?\d+\.\d*)|-?\d+", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['', '', '', '-40.35', '', '', '']

"|" 的匹配顺序从左向右 , 而且一旦匹配上了就不会匹配后面的那段正则

"()" 是将被匹配的优先显示, 但是匹配不中的内容会被用 "" 空字符串来表示

猜你喜欢

转载自www.cnblogs.com/shijieli/p/10624062.html