Извлечь все вхождения шаблона с помощью регулярного выражения и php

0

Я хочу извлечь все слово, которое происходит между 'ob' и ',', т.е. Из строки

' QS=TCE,Ob=Web technology,OB=Product SPe,OB=Dev profile,OB=Computer Management,oB=Hardware Services,cd=sti,CD=com,cd=ws'

Я хочу получить следующие результаты:

Web technology,Product SPe,Dev profile,Computer Management,Hardware Services

Я пробовал это:

preg_match_all("!\OB=(\w+)\,!", ' QS=TCE,Ob=Web technology,OB=Product SPe,OB=Dev profile,OB=Computer Management,oB=Hardware Services,cd=sti,CD=com,cd=ws', $matches);
print_r($matches);

Но это не дает никакого результата. Что в этом плохого?

  • 0
    попробуйте удалить \
  • 0
    $ match = preg_split ("pattern", 'QS = TCE, Ob = веб-технология, OB = SPe продукта, OB = профиль Dev, OB = управление компьютером, oB = аппаратные услуги, cd = sti, CD = com, cd = ws «); Пожалуйста, попробуйте с preg_split ()
Теги:

1 ответ

2
Лучший ответ

Вам нужно учитывать пробелы между вашими словами, я бы использовал отрицание здесь. Также вам нужно удалить escape-последовательности, предшествующие "O" и запятой, и включить модификатор режима i (без учета регистра).

preg_match_all('!OB=([^,]+),!i', $str, $matches);
print_r($matches[1]);

Рабочая демонстрация

  • 1
    Спасибо работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню