我正在处理一个正则表达式来处理文本,如果它在同一行中,它几乎会考虑文本,但是如果它从下一行开始,它将忽略文本。我尝试添加\ s *,但这似乎没有用。能否请您介绍一下如何针对这种情况调整正则表达式PATTERN = r’Section One:(\s?)[\t\f ]*[\w+]’输入:1. Section One: Gyjbhj jchhhhj jjgvbgg2. Section Two: lknlknvd lknlfnvlvkndflvlkvndflvknvlkfdnlkfn3. Section Three:pklnklnfvl lknlknvlflvkndflknvlf
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
元字符\s等效于[ \t\n\r\f\v]。这意味着它将与换行符匹配\n。如果要匹配除换行符以外的任何空格,则必须使用set明确声明它[ \t\r\f\v]。
虽然,看来您想要做的是匹配以开头的文本部分'Section [some number]:'。为此,您可以利用.与换行符不匹配的事实。
pattern = r'Section \w+:.*'
例子
import re
text = """
1. Section One:
Gyjbhj jchhhhj jjgvbgg
2. Section Two: lknlknvd lknlfnv
lvkndflvlkvndflvkn
vlkfdnlkfn
3. Section Three:pklnklnfvl lknlknvl
flvkndflknvlf"""
print(re.findall(pattern, text))
输出
['Section One:', 'Section Two: lknlknvd', 'Section Three:pklnklnfvl']
添加回答
举报
0/150
提交
取消