Php 如何在字符串句子中查找具有特殊字符的单词
我想知道你如何在一个句子中找到具有特殊字符的词,在所有的一般情况下 例如,如果我们有下面的句子Php 如何在字符串句子中查找具有特殊字符的单词,php,regex,regex-negation,Php,Regex,Regex Negation,我想知道你如何在一个句子中找到具有特殊字符的词,在所有的一般情况下 例如,如果我们有下面的句子 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:
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:”)。无法获取$cookie[2]
,因为它不在源字符串中
对于其余部分,您需要分隔单词分隔符[,:]
和特殊字符,它们是单词的一部分:[\$\[\]\@\%]
。应该是这样的:
((\w*[\$\[\]\@\%]+\w*)+?)[ ,:]*
如果可以,请在源字符串的末尾添加一个空格,以便在不丢失最后一个单词的情况下使用强制分隔符:
((\w*[\$\[\]\@\%]+\w*)+?)[ ,:]+
试试这个:
(?:^ |)+(\w*?[^:,\w]+?\w*?)*(?:|,|:$)
如果你有$
,你可以试试为什么要用$
呢?试试\B\$\S*
或者一个更具体的\B\$\w+\[\d*]
,它在php中用作模式指示器。另外,我忘了添加其他案例,格式的问题让我有点困惑。也许你需要?试试这个:它看起来像“Edward'S”也though@LongLe当然。因为撇号对我来说似乎是一个特殊的字符。但是,您可以将此符号添加到此组[^:,\w]
。应该会有帮助。谢谢。虽然它看起来有点野蛮,但它确实工作得很好。@LongLe是的,我的正则表达式中有一些缺陷,但如果我尝试修复它们,它会更复杂。更简单越好:)