我必须将表分成几列。
相邻两列中的文本均与表达式匹配(\S+\s+)+\s*
。但有时,一列会比应有的要大一些,然后第一列元素末尾只有一个空格,因此第一列的正则表达式也会捕获第二列。示例中的数字 1 和 2 表示字符属于哪一列,文件中实际上没有这些数字,例如:
111 111 11111 111111 222 2 2222 222 2
11 1 11 11111 2 22 2222 222 2
111 111 11 11 111 1 111 222 2 222 22 2
11 1 11 11111 2 22 2222 222 2
111 111 11111 11111 222 2 2222 222 2
第一列的标称宽度为 20 个字符,但如果一个“单词”从其中开始并延伸到第 20 列之后,它仍然属于第一列,直到用空格分隔为止。请参见第三行中的示例。
是否有办法在一个正则表达式中按顺序执行两个测试:首先选择(在示例中) 20 个字符,但如果第 20 个字符与空格不同,则(.{19}\S+\s)
在第一列的捕获组中选择?