Tenho os seguintes casos de teste:
CPP_CSHARP_REGEX_TEST_CASES = [
("C++", True),
("C#", True),
("C+", False),
("C##", False),
("C", True),
]
Qual expressão regular eu poderia usar para passar pytest? Eu tentei r"^C[+{2},#{1}]$"
a solução de Tim Biegeleisen, mas falha para C
:
________________________________________________________________________________ test_cpp_csharpRegex[C-True] ________________________________________________________________________________
data = 'C', expected = True
@pytest.mark.parametrize("data, expected", CPP_CSHARP_REGEX_TEST_CASES)
def test_cpp_csharpRegex(data, expected):
cpp_csharp_regex = r"\bC(?:\+\+|#)(?=\s|$)"
> assert expected == bool(re.match(cpp_csharp_regex, data))
E AssertionError: assert True == False
E + where False = bool(None)
E + where None = <function match at 0x7ab4e2cded40>('\\bC(?:\\+\\+|#)(?=\\s|$)', 'C')
E + where <function match at 0x7ab4e2cded40> = re.match
regex_test.py:131: AssertionError
================================================================================== short test summary info ===================================================================================
FAILED regex_test.py::test_cpp_csharpRegex[C-True] - AssertionError: assert True == False
================================================================================ 1 failed, 70 passed in 0.08s ================================================================================
Supondo que você espera que essas correspondências sejam a string de entrada inteira, então use:
Se você quiser capturar essas correspondências talvez como parte de uma sequência maior, com as correspondências cercadas por espaços em branco, use: