我正在处理一个正则表达式来处理文本,如果该文本位于同一行,则该文本几乎被视为文本,但是如果它从下一行开始则忽略文本。我尝试添加\ s *,但似乎没有用。
请问有人可以介绍如何针对这种情况调整正则表达式
PATTERN = r’Section One:(\s?)[\t\f ]*[\w+]’
输入:
1. Section One:
Gyjbhj jchhhhj jjgvbgg
2. Section Two: lknlknvd lknlfnv
lvkndflvlkvndflvkn
vlkfdnlkfn
3. Section Three:pklnklnfvl lknlknvl
flvkndflknvlf
答案 0 :(得分:1)
元字符\s
等效于[ \t\n\r\f\v]
。这意味着它将匹配换行符\n
。如果要匹配除换行符以外的任何空格,则必须使用集合[ \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']