如何编写正则表达式忽略制表符、空行及空格以分割文件内容?
解决方案
核心思路
分两步处理文本:
- 过滤空行:跳过所有仅包含空格、制表符或无实际内容的行;
- 提取有效元素:从非空行中提取所有数字序列(含前导零)和运算符(
*、+、^),自动忽略所有空白字符(空格、制表符)。
关键正则表达式
匹配空行(用于过滤):
^\s*$^和$锁定行的开头与结尾;\s*匹配任意数量的空白字符(空格、制表符、换行符),整行匹配则判定为需要忽略的空行。
提取有效元素(用于分割每行内容):
\d+|[*+^]\d+匹配一个或多个连续数字(支持带前导零的数字,比如01119111);|表示逻辑或;[*+^]匹配单个目标运算符。
示例代码(Python)
以下是基于Python的实现示例,展示逐行处理文件的流程:
import re # 预编译正则表达式 empty_line_re = re.compile(r'^\s*$') element_re = re.compile(r'\d+|[*+^]') # 读取并处理文件 with open('target_file.txt', 'r') as file: for line in file: # 跳过空行 if empty_line_re.match(line): continue # 提取当前行的所有有效元素 valid_elements = element_re.findall(line) print(valid_elements)
处理效果示例
以你提供的第一行内容为例:
99999999 990001 * 01119111 55565 33333 + * + 88888888 +
处理后会得到列表:['99999999', '990001', '*', '01119111', '55565', '33333', '+', '*', '+', '88888888', '+']
内容的提问来源于stack exchange,提问作者echo
相关产品推荐
相关产品推荐

