我很想知道如何在句子中找到带有特殊字符的单词。
例如,如果我们有以下句子
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
而非I
,love
... cookies
(或cookies:
)。
我使用了以下正则表达式:
'#(\S+(?!\w+))#'
但是这种否定是行不通的,我会回复每一句话("我","爱" ..." cookies:" )。
答案 0 :(得分:1)
无法获取$cookie[2]
,因为它不会出现在源字符串中。
对于其他内容,您需要分隔单词分隔符[ ,:]
和特殊字符,它们是单词[\$\[\]\@\%]
的一部分。它应该是这样的:
((\w*[\$\[\]\@\%]+\w*)+?)[ ,:]*
如果可以,请在源字符串的末尾添加一个空格,这样就可以使用强制分隔符而不会丢失最后一个字:
((\w*[\$\[\]\@\%]+\w*)+?)[ ,:]+
答案 1 :(得分:1)