RegEx选择一行或两行

RegEx选择一行或两行,regex,python-3.6,Regex,Python 3.6,我有以下文字 828 : test_case := 9001; 829 : <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= force (others => '1'); 830 : wait_fall_edges(1); 831 : <<signal .ads8363_adc_cnt_tb

我有以下文字

828 :     test_case := 9001;
829 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= force (others => '1');
830 :     wait_fall_edges(1);
831 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> 
832 : <= force (others => '0');
833 :     wait_fall_edges(1);
834 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= release;
835 : 
836 :     test_case := 9004;
837 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '1';
838 :     wait_fall_edges(1);
839 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '0';
840 :     wait_fall_edges(1);
841 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= release;
828:测试用例:=9001;
829 :       '1');
830:等待落下边缘(1);
831 :      
832 :  '0');
833:等待落下边缘(1);
834:
重新导入
mystring=''
828:测试用例:=9001;
829 :       '1');
830:等待落下边缘(1);
831 :      
832 :  '0');
833:等待落下边缘(1);

834:所需的输出是什么?不清楚为什么输出中有行
831
?行831和行832是一行。这个命令刚刚被分成两行。这是一个用例,我用这种方式强制输出来测试我们的系统。
829 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= force (others => '1');
831 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> 
832 : <= force (others => '0');
837 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '1';
839 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '0';
import re
mystring = '''
828 :     test_case := 9001;
829 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= force (others => '1');
830 :     wait_fall_edges(1);
831 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> 
832 : <= force (others => '0');
833 :     wait_fall_edges(1);
834 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= release;
835 : 
836 :     test_case := 9004;
837 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '1';
838 :     wait_fall_edges(1);
839 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '0';
840 :     wait_fall_edges(1);
841 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= release;
'''

output = re.findall(r'^\d+.*(?:\n[^:]+: +)?<= force.*$',mystring,re.MULTILINE)
for line in output:
    print (line)
829 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> <= force (others => '1');
831 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.data_to_ext_device : t_adc_spi_data >> 
832 : <= force (others => '0');
837 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '1';
839 :     <<signal .ads8363_adc_cnt_tb.u_ads8363_adc_cnt.adc_mode_o : std_logic >> <= force '0';