2014-10-16 1 views
0

Я пытаюсь отсканировать для hashtags из NSStrings в Objective-C, и я использую регулярное выражение. Я сделал тестовый статус на Facebook, чтобы узнать, каковы действительные хэштеги, так как это то, где я хочу сфокусировать свое обнаружение хештегов. Моя проблема заключается в том, что мое регулярное выражение все еще получает хэштеги, которым не предшествует пробел или предшествует буквенно-цифровое. В somethin#idfsjoa#idfsjoa обнаруживается как хэштег, когда он не должен быть. Я использую regexpal для проверки моего регулярного выражения.regex, чтобы не обнаружить hashtag после символа не пробега

Как проверить, если "#" не приходит после того, как пространство "

От Facebook:

enter image description here

NSString:

#face #Fa!ce something #iam#1 #1 #919 #jifdosaj somethin#idfsjoa #9#9#98 9#9f9j#9jlasdjl #jklfdsajl34 #34239 #jkf #a #1j3rj3 

Регулярное выражение у меня есть:

(?!\w+)#(\w+)([A-Za-z0]+) 
+0

Каковы ожидаемые результаты от вашей строки? – hwnd

+0

Где находится код Obj-C? –

+0

Я не ставил объектный код C, который я использую, так как мне нужна помощь только в выражении regex. Я только поместил Obj-C в тег, чтобы люди знали, что я использую regex с iOS. @ l'L'l –

ответ

0

Это, кажется, соответствуют вашим критериям:

(?:\s|^)(#(?:[a-zA-Z].*?|\d+[a-zA-Z]+.*?))\b 

Обратите внимание, что сам хэштегом будет первым (и только) захвата.

RegexPal screenshot

+0

Удивительный! Есть ли способ удалить пробелы в начале обнаруженных хэштегов? –

+0

Пространство технически «сопоставлено» регулярным выражением, но только сам хэштег включен в захват ('(# (?: [A-zA-Z]. *? | \ D + [a-zA-Z] +. *?)) ') часть выражения. Я честно не программист Objective-C, поэтому я не могу сказать вам точный подход, но практически * все * механизмы регулярных выражений позволят вам получить доступ к захвату в матче ... вот что вам нужно здесь. – jmar777

+0

я думаю это сделаю. Я просто обрезаю пробелы на хэштегах. –