如何使用正则表达式从字符串中获取值?

时间:2016-07-17 02:41:31

标签: regex

我想使用正则表达式

从下面的字符串中提取值
  

“a:4:{i:0; s:24:\” hello \“tejo krishna \”!!!` \“; i:1 ; s:11:\“ hello \”xyz \“ \”; i:2; s:6:\“ 失败 \ “; I:3; S:7:\” 的 图案 \ “;}”

上面的字符串我想提取斜体格式文本。 任何帮助表示感谢。

谢谢,

1 个答案:

答案 0 :(得分: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中,反斜杠(\)是一个转义字符,因此需要在字符串中进行转义,因此输出中会出现双反斜杠。在正则表达式中,反斜杠也是一个转义字符,因此正则表达式中的双反斜杠。因为它被定义为原始字符串(注意字符串r'...'前面的 r ),Python不需要我们逃避,我们为正则表达式引擎转义。否则你可以在普通字符串中使用4个反斜杠:'\\\\"([\\sa-zA-z0-9]+\\\\?"?[\\sa-zA-z0-9]+\\\\?"?[!] *)\\“'`。如果你的编程语言没有原始字符串可用,你需要这样做。