0

我正在尝试编写一个匹配大多数常见表情符号的正则表达式,但如果它们位于链接内,则不会。

  • 我的表情是:P =P :-P =-P :) :-) =) =-) :/ =/ :-/ =-/ :o =o :-o =-o :( :-( =( =-( :D :d :-D :-d =D =d =-D =-d

  • 我不想http://匹配表情符号:/

  • 我也不想http://something.com?feature=player:p

  • 我不能使用空格作为分隔符,因为我希望人们能够像这样背靠背键入多个表情符号::):):)

我目前几乎可以使用的正则表达式是这样的:

(?<!http)([:=]{1}-?[\)\/\(ODP\]\[\\])|(;(-)?\))

问题是链接中仅省略了第一个表情符号匹配,而不是全部。

我一直在使用Grant Skinner 的 Regexr进行测试。

4

2 回答 2

1

匹配正则表达式中的所有 URL 本身就是一项非常复杂的任务……也许,除非您觉得特别有挑战性,否则不值得尝试。编写一个解析所需内容的函数会容易得多。但是,一个很好的近似 URL 可能是/\w+([-+]\w+)*:[^\s]+/(一些示例可以让您更好地了解它的原因:svn+ssh://localhost、、、ftp://site_name.ouch.auch/~directory/?paramter:=)#anch:o)rhttps://Новости-Советского-Информ-Бюро.рф/С%25Новым%25Годом!。所有这些都是有效的 URL :)

因此,我的策略是首先消除看起来可能是 URL 的内容(这有时也会引起微笑,因为用户最终可能会通过写笑脸来创建有效的 URL),然后解析其余部分。

于 2012-11-03T11:13:43.323 回答
0

尝试模式

(?:(?<!http)(?<!http:):/(?![a-zA-Z0-9])|:-/|=-?/|[:=]-?[()]|[:=]-?[PDdo](?!$)(?![a-zA-Z0-9=]))
于 2012-11-02T22:00:25.567 回答