2009-08-04 3 views
3

Я ищу, чтобы соответствовать синтаксису Twitter с регулярным выражением.Regex match, довольно просто:

Как я могу сопоставить что-либо, что "@______", то есть начинается с символа @, а за ним не пробелы, просто буквы и цифры до конца слова? (Для твитеров, я хочу, чтобы соответствовать чье-то имя в ответе)

+0

В будущем может быть полезно при запросе вопросов RegEx отметить диалект, который вы используете: .NET, Perl, ECMAScript/JavaScript и т. Д. Есть некоторые тонкие отличия. – richardtallent

ответ

6

Перейти к

/@(\w+)/

получить имя соответствия извлеченный, а также.

+0

Это будет работать только для определенного набора допустимых имен. Он не будет работать для имен I18N. Twitter предоставляет очень обширный REGEX для его обработки. –

+0

Al это решение не полезно, потому что если вы проверяете что-то вроде @@ или @ h *, которые недействительны для учетных записей Twitter, они помечены как допустимые выражения с предлагаемым выше regexp – 2012-12-13 17:39:09

+0

@JohnYeary 'Twitter предоставляет очень обширную систему REGEX для ее обработки. , можете ли вы предоставить ссылку на него? –

5

@\w+

просто?

+0

Включает ли w числа? – DOK

+0

Вам нужно \ перед вашим w - и вы, вероятно, захотите использовать +, а не * (поскольку @ без имени недопустимо). – Amber

+0

У меня там была косая черта, я должен был ее укусить, когда я изменил * на + –

0
@[\d\w]+ 

\ d для значного символа
\ ш для символа слова
[] для обозначения класса символов
+, чтобы представлять более одного экземпляра класса символов

Заметим, что эти Специфика для символов слова и цифры зависит от языка. Проверьте спецификацию языка.

+4

\ w действительно содержит цифры, поэтому @ \ w + будет достаточно. – Amber

+1

\ w является буквенно-цифровым –

+0

Другой ответ с помощью только «\ w» является лучшим. – richardtallent

2

Это следует отметить, что Twitter больше не разрешает имена пользователей больше, чем 15 символов, так что вы можете также соответствовать:

@\w{1,15} 

Есть еще по-видимому, мало людей с именами пользователей длиннее 15 символов, но тестирование на 15 было бы лучше, если вы хотите исключить , вероятно, ложных срабатываний.

По-видимому, нет правил относительно того, можно ли использовать символы подчеркивания для начала или конца имени пользователя, нескольких символов подчеркивания и т. Д., А также есть учетные записи с однобуквенными именами, а также с именем пользователя «_».

0

Существует очень обширный API для получения действительных имен твиттера, упоминаний и т. Д. Java-версию API, предоставляемую Twitter, можно найти на github twitter-text-java. Возможно, вам захочется взглянуть на него, чтобы убедиться, что это то, что вы можете использовать.

Я использовал его для проверки имен Twitter, и он работает очень хорошо.