传递php正则表达式中特殊字符前后的所有内容


Pass everything exists before and after special char in php regex

你好,这是我的字符串

data {'1' => 'anything', '2' => '5', '3' => 'anything'}
data {'1' => 'anything', '2' => '5', '3' => 'anything', '7' => 'anything'}
data {'1' => 'anything', '2' => '6', '3' => 'anything'}
data {'1' => 'anything', '5' => 'anything', '2' => '5', '3' => 'anything'}

我想使用regex并获取其中存在'2' => '5'的每一行。

有些像

数据{之前的所有内容('2' => '5')之后的所有内容}

我的问题是如何传递我想要的东西之前和之后存在的一切('2' => '5')?

这是我的正则表达式。请修复

data'h*[{](what should i use here to pass everything exists before)[']2[']'h*[=][>]'h*[']5['](what should i use here to pass everything exists after)[}]

只要得到这条线

data {'1' => 'anything', '2' => '5', '3' => 'anything'}
data {'1' => 'anything', '2' => '5', '3' => 'anything', '7' => 'anything'}
data {'1' => 'anything', '5' => 'anything', '2' => '5', '3' => 'anything'}

请修复我的正则表达式

感谢您的回答,但还有一个问题。。如果我的字符串是

data {'1' => 'anything
anynew line inside of 1', '2' => '5', '3' => 'anything'}
data {'1' => 'anything', '2' => '5', '3' => 'anything', '7' => 'anything'}
data {'1' => 'anything', '2' => '6', '3' => 'anything'}
data {'1' => 'anything', '5' => 'anything', '2' => '5', '3' => 'anything'}

(我使用新的行和''中的其他行)它不会得到那行!!!!!!!!!!!!!我该怎么办?当我在每行中有几行时,.*不起作用我需要获取前后的所有内容(包括行和…)

要捕获一个或多个'key' => 'value',零件,请使用以下方法:

(('s*'[^']*''s*=>'s*'[^']*''s*,'s*)*)

但是,你可以在没有完全匹配模式的情况下检查一行是否包含你的字符串:

preg_match("#'2' => '5'#", $line);

更新:如果要捕获多行文本,请使用严格匹配的模式:

$content = "data {'1' => 'anything
anynew line inside of 1', '2' => '5', '3' => 'anything'}
data {'1' => 'anything', '2' => '5', '3' => 'anything', '7' => 'anything'}
data {'1' => 'anything', '2' => '6', '3' => 'anything'}
data {'1' => 'anything', '5' => 'anything', '2' => '5', '3' => 'anything'}";
preg_match_all("#data''s*''{((''s*'[^']*'''s*=>''s*'[^']*'''s*,''s*)*)''s*'2'''s*=>''s*'5'''s*((''s*,''s*'[^']*'''s*=>''s*'[^']*'''s*)*)#", $content, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    echo "BEFORE: " . $match[1] . "<br />";
    echo "AFTER: " . $match[3] . "<br />";
    echo "<hr />";
}

我注意:如果您是生成此数据的人,您应该使用更好的格式。例如,JSON流对于多行内容数据结构是一个很好的解决方案。您可以很容易地找到适用于PHP的JSON流解析器。