PHP正则表达式匹配换行符和字符除外

时间:2014-05-14 20:09:22

标签: regex

我想在php中创建一个匹配所有字符的正则表达式;但包括所有新行。我可以匹配所有字符,除了;很容易与正则表达式:

[^;]

我可以使用正则表达式匹配包括换行符在内的任何字符:

.*/s

但我不确定如何将两者结合起来得到我想要的结果。我宁愿不必创建一个包含所有数字,符号等的大型正则表达式。

1 个答案:

答案 0 :(得分:1)

只需使用:

[^;]+

这将匹配换行符(因为它们不是;),您只需告诉它匹配的不仅仅是一个字符。

演示: Regex101


<强>实施

$string = 'foo
bar
abc;123
test
';

preg_match_all('/[^;]+/', $string, $matches);
var_dump($matches);

// array(1) {
//   [0]=>
//   array(2) {
//     [0]=>
//     string(13) "foo
// bar
// abc"
//     [1]=>
//     string(11) "123
// test
// "
//   }
// }

<强>替代:

您是否有可能只想使用str_replace()explode(),以下是使用与上述$string相同的示例:

$string = str_replace(';', '', $string);
var_dump($string);

// string(24) "foo
// bar
// abc123
// test
// "

OR

$parts = explode(';', $string);
var_dump($parts);

// array(2) {
//   [0]=>
//   string(13) "foo
// bar
// abc"
//   [1]=>
//   string(11) "123
// test
// "
// }