import re
regex = re.compile(r"((?<=\[)\w+)|(\w+(?=\=))|((?<=\=)\d+)|((?<=\=)\[\d,\d\])|((?<=\=)\[\d,\d,\d,\d])|(\"[a-zA-Z\._0-9\s]+\")|(\'[a-zA-Z\._0-9\s]+\')", flags=re.MULTILINE)
test_str = ("//完整代码匹配测试\n"
"[sprite file=\"1.png\" index=2 rect=[0,0,0,0] pos=[0,2]][sprite file='2.png' index=2 rect=[0,0,0,0]] //这是注释 /comment abcdefg\n"
"//宏名称单元测试\n"
"[bg]\n"
" [bg]\n"
"[ bg]\n\n"
"//字符串参数值单元测试\n"
"=\"abc\"\n"
"=\"ABC\"\n"
"=\"_abcABC\"\n"
"=\"_abcABC.png\"\n"
"=\"_abcABC special.png\" \n\n"
"//参数名单元测试\n"
"[bg index=2]\n"
"[bg index=2]\n"
"[bg index =2]\n\n"
"//int参数值单元测试\n"
"[bg index=54687]\n"
"[bg index=1 index2=26764]\n"
"//pos_t 4位长度的int数组测试\n"
"[bg index=0 pos=[1,2,3,4]]\n"
"//匹配坐标型 pos_t指长度为2的整数型数组,分别为横坐标x、纵坐标y\n"
"[bg index=0 pos=[0,2]\n"
"//abcdd asd [vb ] ")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html