我正在努力清理一个文本,以保留最多的字母,数字和最常见的字体标记。例如,我有时有“words”或“words”,所以我想去掉那些简单的引号。 到目前为止,我选择使用两个正则表达式:
import re
tqre=re.compile('\'\'\'[^\']*\'\'\'') #for triple quotes
dqre=re.compile('\'\'[^\']*\'\'') #for "double" quotes
然后剥去每一根火柴:
res1=tqre.sub(self.quoteExtract,text)
res2=dqre.sub(self.quoteExtract,res1)
其中:
def quoteExtract(self,match):
return match.group().strip("'")
它看起来很适合三重引号,但我有许多双简单引号通过,似乎他们没有抓住。是不是因为它们不是简单的引语,而是另一个相似的符号?有没有别的办法来对付他们?你知道吗
例如:在* ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.
中找不到regex。你知道吗
它不会通过,因为在双引号之间有一个
'
(l'arménien),但是您正在尝试匹配[^']*
。你知道吗这种正则表达式最好用lazy quantifier表示:
这里
.*?
表示匹配任何字符串,当有多个匹配项时,选择最短的一个。你知道吗.
=除新行以外的任何字符*
=零或更多?
在star=非贪婪匹配之后相关问题 更多 >
编程相关推荐