2012-04-11 15 views
-1

Если у меня есть строкаRegEx - извлечение слов с префиксом @ или #

This is a @really nice#day. 

На первом проходе я должен получить в качестве выхода/результата слов really и day (результаты не должны содержать точки или любые другие знаки препинания, также вы должны не просто соответствовать AZ, az и все остальное игнорировать, потому что строка может содержать международные символы, поэтому имейте это в виду).

второй проход Я должен вытащить все, кроме двух слов и знаков препинания, например.

This is a nice 

RegEx осуществляется через PHP.

EDIT: @hochl Проблема ([@#]\w+) в том, что он не улавливает международные символы, такие как šđžćč так #dayš распознается только как #day.

+2

Это домашнее задание? Независимо от того, пожалуйста, напишите, что вы пробовали до сих пор. –

+0

Нет, мне нужно извлечь слова с @ как местами и # как теги на веб-сайте, над которым я работаю. Я искал SO, но не смог найти этот случай, только отрицания с цифрами или подстроками (не один символ). – svenkapudija

+1

См. Мое второе предложение. Я не пытаюсь забрать вас, но, показывая ваши усилия, больше людей будет счастливее, чтобы помочь :) Так помогите нам помочь вам –

ответ

2

Чтобы поймать международные символы, вы можете использовать следующее:

[@#]\p{L}+ 

Вы должны использовать юникод модификатор /u для этого, чтобы работать в PHP.

Примечание:

  • \p{L} говорит это, чтобы соответствовать Юникоду «письмо»
  • Вам не нужно, чтобы обернуть все это в скобках () как весь матч всегда первая группа
+0

'preg_match_all ('/ [@ #] \ p {L} +/u', $ query, $ results) 'it. Благодарю. – svenkapudija

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