通过PHPUnit使用新行字符串\n测试正则表达式

通过PHPUnit使用新行字符串\n测试正则表达式,phpunit,newline,Phpunit,Newline,我创建了一个php库,通过正则表达式解析内容。其中一个正则表达式是'#\n-{3,}#'来解析--,只在前面加一个换行符 我还用PHPUnit编写了所有方法的测试,并且使用新行regex的测试总是失败。我总是和你一起测试 我尝试将以下字符串设置为输入: $input=PHP_EOL'--' $input='--' $input='1!' ---'; // 带中断代码 正如预期的那样,我设定: ” 然而,它总是失败,并得到一个错误。如果我将此变量发送到断言检查,它将失败,并且不会解析新行。只有

我创建了一个php库,通过正则表达式解析内容。其中一个正则表达式是
'#\n-{3,}#'
来解析
--
,只在前面加一个换行符

我还用PHPUnit编写了所有方法的测试,并且使用新行regex的测试总是失败。我总是和你一起测试

我尝试将以下字符串设置为输入:

  • $input=PHP_EOL'--'
  • $input='
    --'
  • $input='1!'
    ---'; // 带中断代码
  • 正如预期的那样,我设定:


    然而,它总是失败,并得到一个错误。如果我将此变量发送到断言检查,它将失败,并且不会解析新行。只有在正则表达式中没有
    \n
    的情况下,如
    '#-{3,}#'
    ,它才能正常工作,测试不会出错

    另外,如果我在测试之前使用一个带有字符串的新行作为输入,它也可以工作,比如

    • $input=“测试\n--”
    但我也希望测试没有字符串,只从一个新行开始

    前端解析工作正常,如果内容是include-break,后面跟着3
    -
    ,它将通过我的标记文件中的这个正则表达式进行替换


    在PHPUnit中,如何将字符串前面的新行设置为
    assertSame()
    函数的输入?

    问题是在模式中使用单引号

    在PHP
    \n
    中,仅当使用双引号时,表示字符串中的“新行”

    $input = PHP_EOL . '---';
    
    preg_match("#\n-{3,}#", $input); // this will match