regex 使用python选择以[1],[2]或[1.1],[1.2]或(1),(2)或(1.1),(1.2)等开头的段落的最佳方法是什么?

hrirmatl  于 2023-03-20  发布在  Python
关注(0)|答案(1)|浏览(106)

选择以[1]、[2]或[1.1]、[1.2]或(1)、(2)或(1.1)、(1.2)等开头并在到达下一个括号编号时结束的段落的最佳方法是什么?
我尝试使用以下代码,但这只适用于[]括号和一位数字。

positions = [] 
# regex to indicate the values [1] or  [2] or ...
pattern = re.compile("\[\d\]") or re.compile("\(\d\)")
# find positions in the string
prev=0
for match in pattern.finditer(text):
    current = text[match.span()[0]+1:match.span()[1]-1]
    if int(current)-int(prev) ==1:
       positions.append(match.start())
    prev = current

last_item=len(positions)-1
# loop throughpositions and print
# print(positions)
for index, item in enumerate(positions):
    start=item
    if index != last_item:
        print('--------Paragraph--------------')
        # print(text[item:positions[index+1]])
        finalText = text[item:positions[index+1]]
        print(finalText)
   
    else:
        print('--------Paragraph--------------')
        print(text[item:])
rryofs0p

rryofs0p1#

我想我会建议像this这样的东西。

^[\[\(]\d+.?\d*[\]\)]

总结:

  • ^:行起始
  • [\[\(][(之一
  • \d+:至少一位数字
  • .?:可选.
  • \d*:0位或更多位数字
  • [\]\)]])之一

相关问题