【发布时间】:2011-06-07 23:57:26
【问题描述】:
我有一个固定宽度的文本文件,其中每个字段总共有 20 个字符。通常只使用 5 个字符,然后是尾随空格。我想使用 Split 函数来提取数据,而不是 Match 函数。有人可以帮我用正则表达式吗?提前致谢。
【问题讨论】:
-
正则表达式适用于哪种语言?你必须使用正则表达式吗?
标签: regex
我有一个固定宽度的文本文件,其中每个字段总共有 20 个字符。通常只使用 5 个字符,然后是尾随空格。我想使用 Split 函数来提取数据,而不是 Match 函数。有人可以帮我用正则表达式吗?提前致谢。
【问题讨论】:
标签: regex
我会使用字符串操作而不是正则表达式来做到这一点。如果您使用的是 JavaScript:
var results = [];
for (i = 0; i < input.length; i += 20) {
results.push(input.substring(i, i + 20));
}
或修剪空白:
var results = [];
for (i = 0; i < input.length; i += 20) {
results.push(input.substring(i, i + 20).replace(/^\s+|\s+$/g, ''));
}
如果你必须使用正则表达式,它应该是 .{20} 之类的。
【讨论】:
substring 采用了最长的子字符串,有点类似于 LINQ 中的 IEnumerable.Take(int)。
拆分空格并获取第一个返回的元素。这是假设您在实际数据中没有空格。
干杯
【讨论】:
如果你必须:
^(.{20})(.{20})(.{20})$ // repeat the part in parentheses for each field
您仍然需要修剪每个字段以删除尾随空格。
使用substr() 或您的等效语言似乎更简单。或者在 PHP 中你可以使用str_split($string, 20)。
【讨论】: