Точные ограничения допустимых символов не ясны, и вы не говорите о языке. Но в Python с вашим примером работает регулярное выражение ниже. Если вы ожидаете больше типов символов на входе, просто расширить классы:
import re
myre = re.compile(r'\\"([\sa-zA-z0-9]+\\?"?[\sa-zA-z0-9]+\\?"?[!`]*)\\"')
s = r'"a:4:{i:0;s:24:\"hello \"tejo krishna\"!!!`\";'\
r'i:1;s:11:\"hello \"xyz\"\";i:2;s:6:\"defeat\";i:3;'\
r's:7:\"pattern\";}"'
match = myre.findall(s)
# results
# ['hello \\"tejo krishna\\"!!!`', 'hello \\"xyz\\"',
# 'defeat', 'pattern']
Примечание: в Python, обратный слеш (\
) является маскирующим, поэтому нужно экранировать в строках, таким образом, двойной обратной косой черты на выходе. В регулярном выражении обратная косая черта также является escape-символом, поэтому двойная обратная косая черта в регулярном выражении. Там, потому что он определен как необработанная строка (обратите внимание на r перед строкой r'...'
), Python не нуждается в нас, чтобы убежать, мы убегаем для механизма регулярных выражений. В противном случае вы могли бы использовать 4 обратных слэша в обычной строке: '\\\\"([\\sa-zA-z0-9]+\\\\?"?[\\sa-zA-z0-9]+\\\\?"?[!
] *) \\ "'`. Вам нужно сделать это, если на вашем языке программирования нет необработанной строки.
Regex отличается (немного) его реализацией и структурой с языка на язык. Поэтому, пожалуйста ** ** ** укажите язык, который вас интересует. –