Python Regex拆分(A)(B)(C)(D)成新行

时间:2015-08-09 10:27:43

标签: python regex

我写了一个正则表达式,将选项分成新行,

(?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号问题格式正确,No.15&amp; 16不是。

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

我的预期输出是:

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)併用可移除塗抹層

2 个答案:

答案 0 :(得分:3)

只需使用换行符再现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 :(得分:1)

之前有一个换行符&#34; Enterococcus&#34;与.不匹配您可以添加修饰符s以使.也匹配换行符。

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