Python正则表达式与某些tex不匹配

2024-07-02 14:15:37 发布

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

我有下面的代码,它几乎匹配了我需要的所有东西。你知道吗

import re
rx_sequence=re.compile(r"^(\d+:\s*\(\*\s*T.+)(?:\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)
text="""
2:(* Test #1 :: trj6tkjtkjty7ry7kyrukjkuy*)

  rtjtyjtryjtrkjyryukryukrkuy
test3test3test3test3test3test3+1;

3:(* Test3:: test3test3test3test3test3 *)

  Twwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwing test69test69';
tyjtdyjtdyjnrdtyntrdyntyntyn

69:(* Ttest69test69:test69test69 *)
  (*test69test69test69test69test69test69test69test69test69test6940: (* Finish Test case *)

    bTestDone := TRUE;

  40: (* Finish Test case *)

    bTestDone := TRUE;


  END_CASE;
  END_CASE;



(**********test10test10test10test10test10**************************)
10: (* Test10test10test10test10test10test10test10test10test10test10test10 *)

  test10[test10] := 'test10'; 
  (* petest10test10test10test10test10test10test10test10 *)  
  btest10test10e := TRUE;

  (* Run Sih';io0;'ioh;ui;oi;io;io;anageState OF

"""
for match in rx_sequence.finditer(text):
    title, sequence = match.groups()
    title = title.strip()
    print ("Title:\n",title)
    print ("\nSequence===========================================================================================:",sequence)
    print ("\n\n")

我的正则表达式与案例69的主体部分和案例10的最后一行不匹配。 我一直在努力想出一个正则表达式,匹配一切,但没有运气。。。我不知道下一步该怎么办。你知道吗


Tags: texttestretruetitlerxendcase
1条回答
网友
1楼 · 发布于 2024-07-02 14:15:37

您可以更新模式的第二部分,使其与以下行相匹配,这些行不是以开始时匹配的模式开始的。你知道吗

^(\d+:\s*\(\*\s*T.+)(?:\r?\n(?!^\d+:\s*\(\*\s*T).*)*

关于第二部分(?:\r?\n(?!^\d+:\s*\(\*\s*T).*)*

  • (?:非捕获群
    • \r?\n
    • (?!^\d+:\s*\(\*\s*T)如果右边的不是表示开始的模式
    • .*匹配除换行符以外的任何字符0+次
  • )*关闭非捕获组

Regex demo

如果希望总共有两个组,也可以将第二部分包装在一个捕获组中。你知道吗

regex demo with 2 capturing groups

相关问题 更多 >