首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex移动字符?

使用regex移动字符?
EN

Stack Overflow用户
提问于 2015-03-30 06:13:26
回答 1查看 298关注 0票数 0

如何使用正则表达式移动“颜色和大小”旁边的颜色和大小?这是我的正则表达式:https://regex101.com/r/fB3jK9/1

结果应该是这样:

我的样本输入如下:

代码语言:javascript
复制
Color and Size - Dark Blue|Small
    Dark Blue|Medium
    Dark Blue|Large
    Dark Blue|X-Large
Color and Size - Black|Small
    Black|Medium
    Black|Large
    Black|X-Large
    Ocean|Small
    Ocean|Medium
    Ocean|Large
    Ocean|X-Large
Color and Size - Black|Small
    Black|Medium
    Black|Large
    Black|X-Large
    Black|2X-Large
    Stone|Small
    Stone|Medium
    Stone|Large
    Stone|X-Large
    Stone|2X-Large

到目前为止,我所能想到的就是:

代码语言:javascript
复制
\n\t

但我需要的输出:

代码语言:javascript
复制
Color and Size - Dark Blue|Small, Dark Blue|Medium, Dark Blue|Large, Dark Blue|X-Large



Color and Size - Black|Small, Black|Medium, Black|Large, Black|X-Large, Ocean|Small, Ocean|Medium, Ocean|Large, Ocean|X-Large






Color and Size - Black|Small, Black|Medium, Black|Large, Black|X-Large, Black|2X-Large, Stone|Small, Stone|Medium, Stone|Large, Stone|X-Large, Stone|2X-Large








// end output
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 07:09:33

我建议将“块”放在一起,并在函数中运行替换,例如:

代码语言:javascript
复制
// Getting a block
var regex = /Color and Size[\s\S]*?(?=Color and Size|$)/gi;

// Taken from http://stackoverflow.com/q/29339480/1578604 to repeat string
String.prototype.repeat = function( num ) {
    return new Array( num + 1 ).join( this );
}

var results = text.replace(regex, function(m) {
    // Get number of line breaks
    var lb = m.split("\n").length - 1;
    // Now remove newlines and tabs, then add the linebreaks at the end
    return m.replace(/\n\t/g, ", ") + "\n".repeat(lb);
});

小提琴

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29339480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档