文本
2014年以來,我國啤酒行業年產量就進入了下滑通道,2019年全國規模以上啤酒企業累計銷量3765.3萬千噸生,較2018年的3812.2萬千升下降1.23%(數據來源:國家統計局),但降。12736iuq34yi3g
正則
1: .*(生產|產量|銷量).*[升噸].*
2: .*((生產)|(產量)|(銷量)).*[升噸].*
很奇怪,我想要取出來句子中,前半部分帶有“生產”或者“產量”或者“銷量”後半部分有“噸”或者“升”的串。文本就是前面的文本。
- 第一個正則
但是findall卻給我取出來這個結果,單單兩個字,我人都懵了啦。我後面不是寫了[升噸]了嗎,怎麼給我整沒了?pattern=re.compile(".*(生產|產量|銷量).*[升噸].*") pattern.findall(text)
['銷量']
- 第二個正則
這結果更離譜……我怕不是學了個假的正則表達……pattern=re.compile(".*((生產)|(產量)|(銷量)).*[升噸].*") pattern.findall(text)
[('銷量', '', '', '銷量')]
findall之外的函數
當然除了findall,還有match和search(iter那個不討論了)。
直接match,是可以match到的。
pattern=re.compile(".*(生產|產量|銷量).*[升噸].*")
pattern.match(text).group()
'2014年以來,我國啤酒行業年產量就進入了下滑通道,2019年全國規模以上啤酒企業累計銷量3765.3萬千噸生,較2018年的3812.2萬千升下降1.23%(數據來源:國家統計局),但降。12736iuq34yi3g'
直接search,也是可以search到的。
pattern.search(text).group()
'2014年以來,我國啤酒行業年產量就進入了下滑通道,2019年全國規模以上啤酒企業累計銷量3765.3萬千噸生,較2018年的3812.2萬千升下降1.23%(數據來源:國家統計局),但降。12736iuq34yi3g'
但侷限就在於,他們只能匹配一個。而我是 我全都要啊。
有個辦法,就是按句號分割每段話,出來句子列表然後按句匹配。但是看上去挺麻煩,