Как найти слова со специальными символами в строковом предложении

Мне было интересно, как вы можете найти слова со специальными символами в предложении, во всей общности.

Например, если у нас есть следующее предложение

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, lovecookies (или же cookies:).

Я использовал следующее регулярное выражение:

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

но отрицание не работает, и я получаю каждое слово обратно («я», «любовь» … «печенье:»).

1

Решение

Попробуй это:

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

Вы можете попробовать это Вот

1

Другие решения

Нет способа получить $cookie[2] поскольку это не присутствует в исходной строке.

В остальном нужно разделять слова разделителями. [ ,:] и специальные символы, которые являются частью слова: [\$\[\]\@\%], Это должно быть что-то вроде этого:

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

Если вы можете, добавьте пробел в конец строки источника, чтобы вы могли использовать обязательные разделители без потери последнего слова:

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

По вопросам рекламы [email protected]