backyard Posted May 18, 2009 Share Posted May 18, 2009 Hello all, I'm trying to pull all the matches of ! characters then space. I've wrote a regexp that I thought would work but does not. I ran it through eclipse and looked at the variables and didn't get what I wanted. The language is php. $r="!goog jkdfkjdsf !hon kasjd !ggg dksjlajd !goh jhsdjhsadhd !hon kjkljjlk !bbb" preg_match_all('/!.+[ ]/',$r,$matches); // search for ! one time then any number of characters then space //output matches[0] = !goog jkdfkjdsf !hon kasjd !ggg dksjlajd !goh jhsdjhsadhd !hon kjkljjlk //desired output matches[0] = !goog !hon !ggg !goh !hon !bbb I can't figure out what I'm doing wrong. What am I missing? Quote Link to comment https://forums.phpfreaks.com/topic/158537-solved-preg_match_all-regexp-question/ Share on other sites More sharing options...
Ken2k7 Posted May 18, 2009 Share Posted May 18, 2009 The issue is that the + is greedy. It tries to match as much as possible. You can add a ? to make it not greedy and it may work. Though for a space, you can just use \s rather than [ ]. But here's my way of doing it. $r = '!goog jkdfkjdsf !hon kasjd !ggg dksjlajd !goh jhsdjhsadhd !hon kjkljjlk !bbb'; preg_match_all('#![^\s]*#', $r, $matches); var_dump(implode(' ', $matches[0])); Quote Link to comment https://forums.phpfreaks.com/topic/158537-solved-preg_match_all-regexp-question/#findComment-836171 Share on other sites More sharing options...
backyard Posted May 18, 2009 Author Share Posted May 18, 2009 Thanks that worked perfectly. Quote Link to comment https://forums.phpfreaks.com/topic/158537-solved-preg_match_all-regexp-question/#findComment-836179 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.