Удалить точку из хештега Regex

Я использую KILabel для своего проекта Swift, чтобы преобразовать хэштеги в ссылки. Моя проблема в том, что функция регулярного выражения, которую я сделал, также захватывает точку. Например, если пользователь пишет #18.3, я хотел бы захватить только # 18

Я попробовал кое-что, чтобы сократить хэштег в какой-то момент, но безуспешно.

regex = [[NSRegularExpression alloc] initWithPattern:@"(#+[\\S\\_]+)?" options:0 error:&error];

У вас есть идеи о том, как я могу это сделать?

1 ответ

Решение

Регулярное выражение у вас есть совпадения 1+ # символы и затем 1 или более любых непробельных символов.

Чтобы остановить сопоставление до первой точки, используйте

@"#[^\\s.]+"

Если внутри могут быть точки, используйте

@"#[^\\s.]+(?:\\.[^\\s.]+)*"

подробности

  • # - а # голец
  • [^\s.]+ - один или несколько символов, кроме пробелов и .
  • (?:\.[^\s.]+)* - ноль или более повторений
    • \. - точка
    • [^\s.]+ - 1 или более символов, кроме пробелов и .,
Другие вопросы по тегам