正则表达式以匹配可能包含''''''''的单引号字符串

时间:2019-05-23 09:20:59

标签: python regex

输入字符串可以是:

- "his 'pet''s name is tom' and she is 2 years old"
- " '''' "
- " '' "
- "function('name', test, 'age')"

我想从这些输入中获取单引号字符串,甚至可能在单引号字符串中包含''

我尝试了否定的前瞻性(?!')以在匹配时忽略''

 '.*?'(?!')    

我希望输出

- 'pet''s name is tom'
- ''''
- 'name' and 'age'

2 个答案:

答案 0 :(得分:0)

r"'(.+?)'"要获取单引号字符串

import re 

tx = "his 'pet''s name is tom' and she is 2 years old"

print(re.findall(r"\'(.+?)\'",tx)) 
#output :  ['pet', 's name is tom'] 

答案 1 :(得分:0)

我认为您可以通过

实现
$str = str_replace(' ', ' ', $text);
$str = html_entity_decode($str, ENT_QUOTES | ENT_COMPAT , 'UTF-8');
$str = html_entity_decode($str, ENT_HTML5, 'UTF-8');
$str = html_entity_decode($str);
$str = htmlspecialchars_decode($str);
$text = strip_tags($str);

请参见regex demo

说明

  • r"'[^']*(?:''[^']*)*'" -单引号
  • '-除单引号外的0+个字符
  • [^']*-的零次或多次重复
    • (?:''[^']*)*-两个单引号
    • ''-除单引号外的0+个字符
  • [^']*-单引号

Regex graph

enter image description here