用于查找和修剪(前导和尾随空格)第一列的正则表达式

时间:2016-10-03 09:28:20

标签: javascript regex regex-lookarounds

对于制表符分隔的表,我想使用JavaScript正则表达式检索每行的第一列。我想不包括前导和尾随空格。如果列是空的(或只包含空格),我想忽略它。

使用括号中的子表达式可以实现:

/^ *((?=\S)[\S ]*\S) *(\t.*)*$/gm

所以$1会在这种情况下给我我想要的东西。但我想知道是否有一个更整洁的解决方案,整个正则表达式将匹配。

修改:对于某些示例文字:

abaft\tinfamous\tvase
  drab\tmarble
    \tcover\tmakeshift
skirt abrupt

匹配项为abaftdrabskirt abrupt

1 个答案:

答案 0 :(得分:0)

似乎你可以使用

/^ *(\S[^\t]*)/gm

请参阅regex demo,其中您的所需值将被捕获到第1组。



var regex = /^ *(\S[^\t]*)/gm;
var str = "abaft	infamous\tvase\n  drab	marble\n    	cover	makeshift\nskirt abrupt";
var res = [];
while ((m = regex.exec(str)) !== null) {
    res.push(m[1]);
}
console.log(res);




详细

  • ^ - 匹配一行的开头(由于/m修饰符)
  • * - 零个或多个空格
  • (\S[^\t]*) - Goup 1捕获
    • \S - 非空白字符
    • [^\t]* - 除标签外的零个或多个字符。

trim()String#match的相同正则表达式的变体:



var regex = /^ *\S[^\t]*/gm;
var str = "abaft	infamous\tvase\n  drab	marble\n    	cover	makeshift\nskirt abrupt";
var res = str.match(regex).map(function(x) {return x.trim();});
console.log(res);