Как получить хэштег из строки, содержащей # в начале и конце без пробела в конце? - PullRequest
0 голосов
/ 07 июня 2018

Это моя строка

"I made this wonderful pic last #chRistmas... #instagram #nofilter #snow #fun"

, и я хотел бы получить хэштег, содержащий # в начале и конце без пробела.Мой ожидаемый результат:

$fun

Это то, что у меня есть для поиска по регулярному выражению:

#[a-z0-9]+

, но это дает мне все хештеги, а не тот, который я хочу.Спасибо за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Вы можете использовать: (^#[a-z0-9]+|#[a-z0-9]+$)

Проверить это онлайн

0 голосов
/ 07 июня 2018

Похоже, вам нужно сопоставить хэштег в конце строки или последний хэштег в строке.Таким образом, существует несколько способов решения проблемы.

Соответствие последнему хэштегу в строке

let str = "I made this wonderful pic last #chRistmas... #instagram #nofilter #snow #fun"
let regex = "#[[:alnum:]]++(?!.*#[[:alnum:]])"
if let range = str.range(of: regex, options: .regularExpression) {
    let text: String = String(str[range])
    print(text)
}

Подробности

  • # - символ хеша
  • [[:alnum:]]++ - 1 или более буквенно-цифровых символов
  • (?!.*#[[:alnum:]]) - без буквенно-цифровых символов # + 1+ после любых 0+ символов, кроме символов разрыва строки сразусправа от текущего местоположения.

Соответствует хэштегу в конце строки

Тот же код, но со следующими регулярными выражениями:

let regex = "#[[:alnum:]]+$"

или

let regex = "#[[:alnum:]]+\\z"

Обратите внимание, что \z соответствует самому концу строки, если между хэштегом и концом строки есть символ перевода строки, совпадений не будет (в случае $, будет совпадение).

Примечание к регулярному выражению

Если хэштег должен начинаться только с буквы, лучше использовать

#[[:alpha:]][[:alnum:]]*

, где [[:alpha:]] соответствует любой букве, а [[:alnum:]]* соответствует 0+ буквам и / или цифрам.

Обратите внимание, что в шаблонах регулярных выражений ICU вы можетенапишите [[:alnum:]] как [:alnum:].

0 голосов
/ 07 июня 2018

Использование #[a-zA-Z0-9]*$ вместо вашего текущего регулярного выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...