在python中使用reg-ex捕获多行
我想写一个正则表达式,它捕获“my_code”行和在它下面缩进的两行在python中使用reg-ex捕获多行,python,regex,Python,Regex,我想写一个正则表达式,它捕获“my_code”行和在它下面缩进的两行 //abs[matches(@class,"her")] //abs[matches(@class,"him")] 我正在使用myu-code\n\s\s(+) 我正在使用myu-code\n\s\s(+) \s匹配空格和换行符 为了确保它是indentend,可以使用字符类匹配换行符的2倍和1个或多个空格或制表符[\t]+ ^my_code\r?\n[\t ]+.+\r?\n[ \t]+.+ ^字符串的开头 my
//abs[matches(@class,"her")]
//abs[matches(@class,"him")]
我正在使用myu-code\n\s\s(+)
我正在使用myu-code\n\s\s(+)
\s
匹配空格和换行符
为了确保它是indentend,可以使用字符类匹配换行符的2倍和1个或多个空格或制表符[\t]+
^my_code\r?\n[\t ]+.+\r?\n[ \t]+.+
字符串的开头^
按字面意思匹配,后跟换行符my\u code\r?\n
匹配1+个空格或制表符[\t]+
匹配除换行符以外的任何字符的1+倍+
再次匹配换行符、1+空格或制表符以及除换行符以外的任何字符\r?\n[\t]+.+
+
^my_code(?:\r?\n[\t ]+.+)+
该
\s
匹配空格和换行符
为了确保它是indentend,可以使用字符类匹配换行符的2倍和1个或多个空格或制表符[\t]+
^my_code\r?\n[\t ]+.+\r?\n[ \t]+.+
字符串的开头^
按字面意思匹配,后跟换行符my\u code\r?\n
匹配1+个空格或制表符[\t]+
匹配除换行符以外的任何字符的1+倍+
再次匹配换行符、1+空格或制表符以及除换行符以外的任何字符\r?\n[\t]+.+
+
^my_code(?:\r?\n[\t ]+.+)+
我设法让它像这样工作:
test_str = """
my_code
//abs[matches(@class,"her")]
//abs[matches(@class,"him")]
xxxx //time
xxxxx //h1
"""
pattern = re.compile('my_code\n\s+[^\n]+\n\s+[^\n]+')
res = re.search(pattern, test_str)
print(res.group())
[^\n]+
表示匹配除新行以外的每个字符,并且应该有一个或多个字符。这将产生如下输出:
my_code
//abs[matches(@class,"her")]
//abs[matches(@class,"him")]
我设法让它像这样工作:
test_str = """
my_code
//abs[matches(@class,"her")]
//abs[matches(@class,"him")]
xxxx //time
xxxxx //h1
"""
pattern = re.compile('my_code\n\s+[^\n]+\n\s+[^\n]+')
res = re.search(pattern, test_str)
print(res.group())
[^\n]+
表示匹配除新行以外的每个字符,并且应该有一个或多个字符。这将产生如下输出:
my_code
//abs[matches(@class,"her")]
//abs[matches(@class,"him")]