python正则表达式固定长度字段,包含指定的字符和子字符串
如何捕获具有固定长度字段(包括指定字符和子字符串)的行?在这种情况下:python正则表达式固定长度字段,包含指定的字符和子字符串,python,regex,Python,Regex,如何捕获具有固定长度字段(包括指定字符和子字符串)的行?在这种情况下: 每个字段包含8个字符 第一个字段仅包括“RBE3”和空格 第三个字段仅包含“123”和空格 输入: 123456781234567812345678123... (char numbers) RBE3 323123 123121 RBE3 323123 123 121 RBE3 32312300123 121 RBE3 3231231234 121 $ RB
- 每个字段包含8个字符
- 第一个字段仅包括“RBE3”和空格
- 第三个字段仅包含“123”和空格
123456781234567812345678123... (char numbers)
RBE3 323123 123121
RBE3 323123 123 121
RBE3 32312300123 121
RBE3 3231231234 121
$ RBE3 323123123 121
R B E3 32312 123 121
RBE32312 12313
产出将是:
RBE3 323123 123121
RBE3 323123 123 121
RBE3 32312300123 121
我试过:
regex = r'^([RBE3\s]{8}.{8}[123\s]{8}.*\n)'
但这似乎是一个完全错误的方向我强烈建议不要为此使用单一的正则表达式。最好把你的行分成8块,然后验证它们 如果你坚持,这是可能的,但很难看:
^(\s*RBE3\s*)(?<=^.{8})(.{8})(\s*123\s*)(?<=^.{24})(.*)$
^(\s*RBE3\s*)(?第3组)
(?第4组)
$#字符串/行的结尾
测试它。请注意,只有第2行和第3行满足您所述的要求。我强烈建议不要为此使用单个正则表达式。最好将您的行切分为8行,然后验证它们 如果你坚持,这是可能的,但很难看:
^(\s*RBE3\s*)(?<=^.{8})(.{8})(\s*123\s*)(?<=^.{24})(.*)$
^(\s*RBE3\s*)(?第3组)
(?第4组)
$#字符串/行的结尾
测试它。请注意,只有第2行和第3行满足您所述的要求。对于计算正确的正则表达式非常有用。如果每个字段包含8个字符,为什么在每个匹配项中每行有27个字符?有27个字符,因为每行最多可以包含9个字段,而我没有编写其余的。您的输出不满足您的要求…对于计算正确的正则表达式非常有用如果每个字段包含8个字符,为什么在每个匹配项中每行有27个字符?有27个字符,因为每行最多可以包含9个字段,而我没有编写其余字段。输出的第三行不满足您的要求恩茨。。。