如何在字符串句子中查找带有特殊字符的单词

How to find words with special characters in a string sentence

我想知道一般情况下如何在句子中找到带有特殊字符的单词。

例如如果我们有下面的句子

I love (#coo$kies) the following cookies: $cookie[1], $cookie[2, @cookie, @cookie%, hot@dog

抛开这不是在字符串中使用变量的事实。检索“#coo$kies”的正则表达式是什么 $cookie[1]$cookie[2@cookie@cookie%hot@dog 而不是 Ilove ... cookies(或cookies:)。

我使用了以下正则表达式:

'#(\S+(?!\w+))#'

但是否定不起作用,我得到了每一个字("I","love"..."cookies:")。

无法获取 $cookie[2],因为它不存在于源字符串中。

对于其余部分,您需要将单词定界符 [ ,:] 和特殊字符分开,它们是单词的一部分:[$\[\]\@\%]。它应该是这样的:

((\w*[$\[\]\@\%]+\w*)+?)[ ,:]*

如果可以,请在源字符串的末尾添加一个 space,这样您就可以在不丢失最后一个字的情况下使用强制分隔符:

((\w*[$\[\]\@\%]+\w*)+?)[ ,:]+

试试这个:

(?:^| )+((\w*?[^ :,\w]+?\w*?)*)(?: |,|: |$)

你可以试试here