2015-08-09 41 views
1

我写一个正则表达式的选择分离成新的线,Python的正则表达式分裂(A)(B)(C)(d)插入新行

(?P<qn>^\d+)\s*?\.(?P<qt>.*?)\s*?(?P<A>A\s*?\..*?)\n*?(?P<B>B\s*?\..*?)\n*?(?P<C>C\s*?\..*?)\n*?(?P<D>D\s*?\..*?)\n*(?=\Z) 

参见https://www.regex101.com/r/hP0nX4/2

14.下列牙齒外傷,何者最易發生牙髓壞死? 

A.震盪(concussion) 
B.半脫臼(subluxation) 
C.凸出性脫位(extrusive luxation) 
D.內縮性脫位(intrusive luxation) 

15 .藥物在正常使用下,何種藥品對 
Enterococcus faecalis 的殺菌效果通常最快? 
A.2.5%次氯酸鈉(NaOCl) B.0.5%chlorhexidine C.2%iodine/4%potassium iodide D.氫氧化鈣(Ca(OH)2) 

16 .有關根管治療時使用EDTA移除塗抹層(smear  layer)之敘述,下列何者錯誤? 
A.臨床上常使用的EDTA濃度為27% B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層 C.EDTA可深入牙本質小管約50µm D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層 

问题第14号格式良好,第15号不是。

我的正则表达式只匹配一个问题,我怎么能使它匹配所有问题。 并将所有选择分隔为新行?


我的预期成果是:

14.下列牙齒外傷,何者最易發生牙髓壞死? 

A.震盪(concussion) 
B.半脫臼(subluxation) 
C.凸出性脫位(extrusive luxation) 
D.內縮性脫位(intrusive luxation) 

15 .藥物在正常使用下,何種藥品對 
Enterococcus faecalis 的殺菌效果通常最快? 
A.2.5%次氯酸鈉(NaOCl) 
B.0.5%chlorhexidine 
C.2%iodine/4%potassium iodide 
D.氫氧化鈣(Ca(OH)2) 

16 .有關根管治療時使用EDTA移除塗抹層(smear  layer)之敘述,下列何者錯誤? 
A.臨床上常使用的EDTA濃度為27% 
B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層 
C.EDTA可深入牙本質小管約50µm 
D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層 
+0

您的预期产出是? –

+0

嗨,@AvinashRaj。我的预期输出是将选择A,B,C,D放在每行的开始处。 – Aaron

回答

3

就repace之前BCD.其存在与换行字符的空间。

re.sub(r'\s+(?=[BCD]\.)', '\n', s) 

DEMO

例子:

>>> s = '''14.下列牙齒外傷,何者最易發生牙髓壞死? 

A.震盪(concussion) 
B.半脫臼(subluxation) 
C.凸出性脫位(extrusive luxation) 
D.內縮性脫位(intrusive luxation) 

15 .藥物在正常使用下,何種藥品對 
Enterococcus faecalis 的殺菌效果通常最快? 
A.2.5%次氯酸鈉(NaOCl) B.0.5%chlorhexidine C.2%iodine/4%potassium iodide D.氫氧化鈣(Ca(OH)2) 

16 .有關根管治療時使用EDTA移除塗抹層(smear  layer)之敘述,下列何者錯誤? 
A.臨床上常使用的EDTA濃度為27% B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層 C.EDTA可深入牙本質小管約50µm D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層''' 

>>> print(re.sub(r'\s+(?=[BCD]\.)', '\n', s)) 
14.下列牙齒外傷,何者最易發生牙髓壞死? 

A.震盪(concussion) 
B.半脫臼(subluxation) 
C.凸出性脫位(extrusive luxation) 
D.內縮性脫位(intrusive luxation) 

15 .藥物在正常使用下,何種藥品對 
Enterococcus faecalis 的殺菌效果通常最快? 
A.2.5%次氯酸鈉(NaOCl) 
B.0.5%chlorhexidine 
C.2%iodine/4%potassium iodide 
D.氫氧化鈣(Ca(OH)2) 

16 .有關根管治療時使用EDTA移除塗抹層(smear  layer)之敘述,下列何者錯誤? 
A.臨床上常使用的EDTA濃度為27% 
B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層 
C.EDTA可深入牙本質小管約50µm 
D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層 
1

还有是不是.匹配的 “粪” 之前,您可以添加修改s使.也匹配换行符换行符。

请注意,换行符仍然会在结果中。

相关问题