正则表达式匹配下一行中的单词

时间:2018-06-20 13:44:32

标签: python regex

我正在处理一个正则表达式来处理文本,如果该文本位于同一行,则该文本几乎被视为文本,但是如果它从下一行开始则忽略文本。我尝试添加\ 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 

1 个答案:

答案 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']