[我在转义的方括号前转义了反斜线时遇到了正则表达式匹配的麻烦
import re
def test_regex(test_number, regex_to_test, string_to_test):
if re.match(regex_to_test, string_to_test) is None:
print("Test #{0} FAILED ! Returned value was None".format(test_number))
else:
print("Test #{0} OK".format(test_number))
# REGEX APPLIED STRING REAL STRING
test_regex(0, "\\\{\\\}", "\\{\\}") # \{\}
test_regex(1, "\\\{\\\\\\\}", "\\{\\\}") # \{\} or :\{\\} ???
test_regex(2, "\\\{\\\\\\\}", "\\{\\\\}") # \{\\}
# Now we replace in test '{' and '}' respectively by '[' and ']'
test_regex(3, "\\\[\\\]", "\\[\\]") # \[\]
test_regex(4, "\\\[\\\\\\\]", "\\[\\\]") # \[\] or :\[\\] ???
test_regex(5, "\\\[\\\\\\\]", "\\[\\\\]") # \[\\]
# Extra incomprehensible
test_regex(6, "\\\{\\\}", "\{\}") # {}
test_regex(7, "\\\\{\\\\}", "\{\}") # {}
# Now we replace in test '{' and '}' respectively by '[' and ']'
test_regex(8, "\\\[\\\]", "\[\]") # []
test_regex(9, "\\\\[\\\\]", "\[\]") # []
输出:
Test #0 OK
Test #1 OK
Test #2 OK
Test #3 FAILED ! Returned value was None
Test #4 FAILED ! Returned value was None
Test #5 FAILED ! Returned value was None
Test #6 OK
Test #7 OK
Test #8 FAILED ! Returned value was None
Test #9 FAILED ! Returned value was None
为什么从'{'和'}'切换到'['和']'会改变一切?
我如何编辑我的正则表达式以使测试#3和#4像'{'和'}'一样工作?
Test #3 OK