Regular Expression for Parsing Hashtags in Java

Refresh

December 2018

Views

8.3k time

6

Here is the Twitter message I am trying to parse (as you can see, some of these are not tags, just part of URLs):

#anothertag Arrogance and bad PR http://www.adobe.com/index.html#anchor1. John 
Nack on &#Adobe: Information about Photoshop© CS3 on Snow Leopard 
#fail #design</pre>

This regular expression is what I have so far, but it still picks up some the url tags:

[##]+([A-Za-z0-9-_]+)

3 answers

3

@Daniel Dura: [##] это должно быть бессмысленным. Скобки [] используются для обозначения классов символов. [##] такое же как [#]. И [##] + такой же, как [#] +.

6

Разве это не иронично, как только я после этого я нашел ответ. Так что если вы ищете шаблон согласования, чтобы сделать это, следующий, кажется, работает:

(?: \ S | \ A) [##] + ([A-Za-z0-9 -_] +)

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

3

я думаю это

(\s|\A)#(\w+)

работает хорошо , и является немного более точным. Кстати, при работе с регулярными выражениями Java я всегда использую regexplanet , чтобы проверить мои выражения. Гораздо быстрее , чем тестирование в Java.

--Hardy