2014-08-17 2 views
0
$regex = "/(.+),(.+);/"; 
$input = "somestring, 234, sometring5"; 
preg_match_all($regex, $input, $matches, PREG_SET_ORDER); 

Я попытался сделать это следующим образом:PHP preg_match все, кроме запятых?

$regex = "/(.^,+),(.^,+);/"; 
$input = "somestring, 234, sometring5"; 
preg_match_all($regex, $input, $matches, PREG_SET_ORDER); 

Но это не работает, потому что я думал, что ^, средства, кроме запятых, но почему она не работает?

Потому что я хочу сгруппировать их запятыми, но запятые - это сами символы, которые парсер получает, как этого избежать?

+5

Это работает только с классами символов. '[^,]' будет соответствовать всем остальным запятым. Внешние квадратные скобки '^' означает «начало строки или строки». – GhostGambler

+0

Если ответ, который мы дали, решил вашу проблему, пожалуйста, подумайте о том, чтобы принять его, чтобы другие люди знали, что помогло. – deW1

ответ

1

Вот a modified version of your RegEx, с некоторыми пояснениями для каждого модификатора.

И для тех, кто не желает, чтобы посетить ссылку: регулярное выражение, чтобы все слова в предложении /([a-zA-Z0-9]*)/g

  • [a-zA-Z0-9] означает матч все символы не символ (аз, AZ и 0-9)
  • * означает совпадение с ним как можно больше повторяющихся периодов
  • g модификатор (/g в конце) означает совпадение как можно большего количества внутри строки; не просто останавливайтесь на первом.
1

Вы можете просто разделить строку на , и дифферента результат:

$matches = array_map('trim', explode(',', $input)); 
0
$regex = "/([^,])/g"; 
$input = "somestring, 234, sometring5"; 
preg_match_all($regex, $input, $matches, PREG_SET_ORDER); 

получит вам все, кроме запятых.

+0

Все, кроме запятых! = Все символы слова –

+0

@Layne отлично отредактирован:> – deW1

Смежные вопросы