正则表达式的独特问题

时间:2017-09-21 11:33:54

标签: php regex

我对正则表达式有一个非常奇怪的问题,我正在使用LINK进行测试 请仅在那里进行测试,因为它与我的机器完全相同。 我应该只能看到以下文字:"审计说明3 4 5 6 7"但我可以看到一个空数组。我知道此代码适用于regex101.com请帮忙

Regex LINK

$string = "1

2

Audit Note by 3
4 
5
6
7

I don't need this line

I don't need this line
";

preg_match("/^Audit Note by(.*$)^$/ms",$string, $nmatch);
echo $nmatch[0];

3 个答案:

答案 0 :(得分:2)

这是您更新的正则表达式:https://regex101.com/r/sSg4gb/7

$string = "1

2

Audit Note by 3
4 
5
6
7

I don't need this line

I don't need this line
";

preg_match("#Audit Note by [\d.\s]*#",$string, $nmatch);
echo($nmatch[0]);

输出:

Audit Note by 3 
4 
5 
6 
7

请在此处查看:https://3v4l.org/hiXpY

答案 1 :(得分:2)

您可以使用^$而不是使用\R来匹配新行,并使用此代码:

$string = "1

2

Audit Note by 3
4
5
6
7

I don't need this line

I don't need this line
";

preg_match('/^(Audit Note by.*?)\R\R/ms',$string, $nmatch);
echo $nmatch[1];

\R\R匹配任意类型的2个连续换行符。

<强>输出:

Audit Note by 3
4
5
6

答案 2 :(得分:1)

试试这个正则表达式:

preg_match("/Audit Note by (\d+\s+)+/",$string, $nmatch);
echo $nmatch[0];

它给了我:

Audit Note by 3 4 5 6 7