在Python中,处理嵌套的正则表达式可以使用递归模式。这里有一个例子,展示了如何使用re
库匹配嵌套结构,例如HTML标签中的嵌套。
import re def match_nested(pattern, text): stack = [] result = [] current_match = None for i, char in enumerate(text): if char == '<': if stack: current_match = re.search(pattern, text[i:]) if current_match: result.append(current_match.group()) stack.pop() continue elif char == '>': stack.pop() if not stack and current_match: result.append(current_match.group()) current_match = None return result # 示例 html = '''''' pattern = r'<[^>]+>' matches = match_nested(pattern, html) print(matches)这是一个段落。
- 列表项1
- 列表项2
这个例子中,match_nested
函数使用一个栈来处理嵌套的正则表达式。当遇到<
时,它会将当前的索引和字符压入栈中,然后尝试在当前索引处匹配正则表达式。如果匹配成功,它将结果添加到结果列表中,并从栈中弹出一个元素。当遇到>
时,它将从栈中弹出一个元素。如果在遍历完文本后栈为空且当前匹配有效,它会将结果添加到结果列表中。
请注意,这个例子仅适用于简单的HTML嵌套结构。对于更复杂的嵌套结构,建议使用HTML解析库(如BeautifulSoup)来处理。