python中的正则表达式需要保留特殊字符

时间:2018-01-29 10:03:49

标签: python regex

下面是我的不洁文字字符串

text = 'this/r/n/r/nis a non-U.S disclosures/n/n/r/r analysis agreements disclaimer./r/n/n/nPlease keep it confidential' 

下面是正则表达式:

 ' '.join(re.findall(r'\b(\w+)\b', text))

我的输出是:

'this is a non US disclosures analysis agreements disclaimer. Please keep it confidential'

我的预期输出是:

 'this is a non-U.S disclosures analysis agreements disclaimer. Please keep it confidential'

我需要在单词之间保留特殊字符和空格,应该只有一个空格。任何人都可以帮助我改变我的正则表达式吗?

2 个答案:

答案 0 :(得分:1)

希望这适合你!

str =&#39;此/ r / n / r / n是非美国披露/ n / n / r / r分析协议免责声明./r/n/n/n请保密吗&#39; < / p>

val = re.sub(r&#39;(/。?)&#39;,&#34;&#34;,str); val1 = re.sub(r&#39; \ s +&#39;,&#34;&#34;,val) 打印(VAL1)

答案 1 :(得分:0)

使用比\ b更具体的单词障碍($表示字符串的结尾不能放在方括号内,所以你必须在$ | \ n | \ r |中进行或显式?和=这是非常消费的前瞻,就像\ b),这里更安全的是使用非贪婪的非空累加器(+符号使其非空,问号使其不贪婪):

re.findall(r'[^\n\r ]+?(?=$|\n|\r| )', text)
  

['this','is','a','non-U.S','披露','分析',   '协议','免责声明。','请','保持','它',   的机密']