Match rest of string with regex

13,901

Solution 1

preg_match('/^ch:(\S+)/', $string, $matches);
print_r($matches);

\S+ is for matching 1 or more non-space characters. This should work for you.

Solution 2

$str = <<<TEXT
ch:keyword
ch:test
ch:
ch:some_text
ch: red
TEXT;

preg_match_all('|ch\:(\S+)|', $str, $matches);

echo '<pre>'; print_r($matches); echo '</pre>';

Output:

Array
(
    [0] => Array
        (
            [0] => ch:keyword
            [1] => ch:test
            [2] => ch:some_text
        )

    [1] => Array
        (
            [0] => keyword
            [1] => test
            [2] => some_text
        )

)

Solution 3

Try this regular expression:

^ch:\S.*$
Share:
13,901
q3d
Author by

q3d

Updated on June 24, 2022

Comments

  • q3d
    q3d almost 2 years

    I have a string like this

    ch:keyword
    ch:test
    ch:some_text
    

    I need a regular expression which will match all of the strings, however, it must not match the following:

    ch: (ch: is proceeded by a space, or any number of spaces)
    ch: (ch: is proceeded by nothing)
    

    I am able to deduce the length of the string with the 'ch:' in it. Any help would be appreciated; I am using PHP's preg_match()

    Edit: I have tried this:

    preg_match("/^ch:[A-Za-z_0-9]/", $str, $matches)
    

    However, this only matches 1 character after the string. I tried putting a * after the closing square bracket, but this matches spaces, which I don't want.