Предполагая, что вы хотите сопоставить *
буквально как звездочку, вам нужно экранировать его с предшествующим \
следующим образом.
@"^User \* has (logged out|joined)$"
Если под *
вы подразумеваете «любое имя пользователя», то замените его либо регулярным выражением, которое вы используете для проверки своих имен пользователей, либо из-за отсутствия чего-либо лучшего, вы всегда можете использовать только .*
.
Конструкция (logged out|joined)
называется «чередование». Окружающие скобки, в дополнение к обеспечению приоритета при чередовании в этом случае, также включают в группу 1 либо строку "logged out"
, либо "joined"
, в зависимости от того, какое чередование соответствует.
Если вам не нужно различать два события, тогда вам не нужно захватывать эту строку, и вы можете использовать группу без захвата (?:logged out|joined)
для небольшого прироста производительности.
^
и $
- это так называемые якоря, которые соответственно соответствуют началу и концу строки. Правильное размещение этих якорей в шаблоне гарантирует, что он соответствует всей входной строке, а не только подстроке.
регулярные ссылки-info.info Ссылки