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? 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])); 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. 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
Archived
This topic is now archived and is closed to further replies.