为什么不能将两个正则表达式与|
一起使用?
re.findall(r"[a-z]+-[a-z]+", text, re.MULTILINE)
re.findall(r"[a-z]{2,}", text, re.MULTILINE)
组合的一个表达式。
re.findall(r"[a-z]+-[a-z]+|[a-z]{2,}", text, re.MULTILINE)
我发现r"[a-z]+-[a-z]+|[a-z]{2,}"
无法表达r"[a-z]+-[a-z]+"
或[a-z]{2,}
吗?
@pkqxdd等正则表达式([a-z]+-[a-z]+)|([a-z]{2,})
不等于
[a-z]+-[a-z]+
或[a-z]{2,}
,这是我的证明。
请安装textrac
并准备一个示例pdf文件进行测试。
import textract, re
text = textract.process("sample.pdf").decode()
text = text.lower()
totalWords1 = re.findall(r"[a-z]+-[a-z]+", text, re.MULTILINE)
totalWords2 = re.findall(r"[a-z]{2,}", text, re.MULTILINE)
totalWords = totalWords1 + totalWords2
totalWords3 = re.findall(r"([a-z]+-[a-z]+)|([a-z]{2,})", text, re.MULTILINE)
totalWords4 = re.findall("([a-z]+-[a-z]+)|([a-z]{2,})", text, re.MULTILINE)
len(totalWords)
len(totalWords3)
len(totalWords4)
在这里显示我的实验。
>>> len(totalWords)
243322
>>> len(totalWords3)
240397
>>> len(totalWords4)
240397
答案 0 :(得分:-2)
您可能需要对它们进行分组,否则您的|
仅在[a-z]+
和[a-z]{2,}
上工作,正如其他人指出的那样,它们重叠。
([a-z]+-[a-z]+)|([a-z]{2,})
这应该可以解决问题。