为什么不能将这两个正则表达式与` | ``合二为一呢?

2024-07-08 07:47:50 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么不能将这两个正则表达式与|合并为一个呢?你知道吗

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和other,正则表达式([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

enter image description here


Tags: textrelenpdf表达式multilineothertextract
1条回答
网友
1楼 · 发布于 2024-07-08 07:47:50

您可能需要对它们进行分组,否则您的|只处理[a-z]+[a-z]{2,},正如其他人指出的那样,这两个部分是重叠的。你知道吗

([a-z]+-[a-z]+)|([a-z]{2,})

这应该能奏效。你知道吗

相关问题 更多 >

    热门问题