Reputation: 2423
How do I have a regex statement that accepts any character except new lines. This includes anything but also includes new lines which is not what i want:
"/(.*)/"
Upvotes: 3
Views: 11088
Reputation: 53960
this is strange, because by default the dot (.) does not accept newlines. Most probably you have a "\r" (carriage return) character there, so you need to eliminate both: /[^\r\n]/
ah, you were using /s
Upvotes: 0
Reputation: 132534
#!/usr/bin/env php
<?php
$test = "Some\ntest\nstring";
// Echos just "Some"
preg_match('/(.*)/', $test, $m);
echo "First test: ".$m[0]."\n";
// Echos the whole string.
preg_match('/(.*)/s', $test, $m);
echo "Second test: ".$m[0]."\n";
So I don't know what is wrong with your program, but it's not the regex (unless you have the /s
modifier in your actual application.
Upvotes: 1
Reputation: 9487
The default behavior shouldn't match a new line. Because the "s" modifier is used to make the dot match all characters, including new lines. Maybe you can provide an example to look at?
Upvotes: 1
Reputation: 6878
As written on the PHP Documentation page on Preg Modifiers, a dot .
does NOT include newlines, only when you use the s
modifier.
Source
Upvotes: 4
Reputation: 176833
The dot .
does not match newlines unless you use the s
modifier.
>>> preg_match("/./", "\n")
0
>>> preg_match("/./s", "\n")
1
Upvotes: 15
Reputation: 5402
The following regular expression should match any character except newlines
/[^\n]+/
Upvotes: 1