正则表达式中的转义方括号前带有转义反斜杠的问题

问题描述 投票:0回答:1

[我在转义的方括号前转义了反斜线时遇到了正则表达式匹配的麻烦

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像'{'和'}'一样工作?

python regex python-3.x python-2.7 backslash
1个回答
0
投票
输出:

Test #3 OK

© www.soinside.com 2019 - 2024. All rights reserved.