2016-07-17 3 views
1

Я хочу, чтобы извлечь выгоду из ниже строки с использованием регулярных выраженийКак получить значение из строки, используя регулярное выражение?

"а: 4: {I: 0, S: 24: \" привет \ "теджо кришна \" !!! ` \ "; я: 1; s: 11: \" привет \ "хуг \" \ "; я: 2; s: 6: \" поражение \ "; я: 3; s: 7: \ "модель \";} "

над строкой Я хочу извлечь текст в тексте курсивом. любая помощь оценена.

Спасибо,

+2

Regex отличается (немного) его реализацией и структурой с языка на язык. Поэтому, пожалуйста ** ** ** укажите язык, который вас интересует. –

ответ

1

Точные ограничения допустимых символов не ясны, и вы не говорите о языке. Но в 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]+\\\\?"?[!] *) \\ "'`. Вам нужно сделать это, если на вашем языке программирования нет необработанной строки.

Смежные вопросы