CrazyCHEN_
2021-08-16 21:03
采纳率: 50%
浏览 86
已结题

Python中正则表达式以特定的某类字符串作为模式串的开头和结尾如何表达?

在openjudge做题中遇到的问题,题目要求如下:

img

题目要求的模式串以

<X>


```开头,
```python
</X>

结尾,中间内容不限,而且X为不为零的小写字母,字符数量不限。
根据提示的思路可以用正则表达式分组来求解,只是目前仅能得到部分内容,不能满足题目要求,求指点。

import re

n = int(input())
m = '(<\\w+>).*?((\\(\\d{1,2}\\))-\\d{3})+?.*?(</\\w+>)'
for i in range(n):
    s = input()
    lst = re.findall(m, s)
    print(lst)

样例输入:


2
<bb>(01)-123<a>bbb(02)-2784KK</a><xy>stk(1)-123(03)-345b</xy>(04)-123</xy><z>(05)-123</zz>zz<yy>(06)-123</yy>
<bb>(01)-123<a><k>1223</k><a>(01)-12</a>

我的程序输出:
[('', '(01)-123', '(01)', ''), ('', '(1)-123', '(1)', ''), ('', '(05)-123', '(05)', ''), ('', '(06)-123', '(06)', '')]

[('', '(01)-123', '(01)', '')]
样例输出:

<xy>1,03</xy>
<yy>06</yy>
NONE

  • 好问题 提建议
  • 收藏

2条回答 默认 最新

  • CSDN专家-Time 2021-08-16 21:08
    已采纳

    正则表达式 开始 是^ 结束是$

    已采纳该答案
    评论
    解决 1 无用 1
    打赏 举报
  • 八云黧 2021-08-16 21:16

    在模式中使用分组

    import re
    
    m = r'<(\w+)>.*?\((\d{1,2})\)-(\d{3})+?.*?</\1>'
    obj = re.match(m,"<str>(1)-123</str>")
    print(obj.group(1))
    print(obj.group(2))
    print(obj.group(3))
    
    
    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题