2015-04-30 35 views
2

我在想这是非常简单的事情,但我在任何地方都找不到答案。我已经找到了关于如何匹配多行字符串中的整个第一行的结果,而不是如何仅在第一行中找到某个字符的所有匹配项。正则表达式替换某些字符在第一行

因此,例如:

HelloX dXudXe 
How areX yXou? 
FxIXne? 

仅匹配在第一行的所有资本X秒,替换与任何会导致:

Hello dude 
How areX yXou? 
FxIXne? 

这只会匹配的第一个X:

/X/m 

这所有X匹配:

/X/g 

所以我猜的答案是这些语句之一的正则表达式版本:

"Replace all X characters until you find a newline" 
"Replace all X characters in the first line" 

这听起来像这样一个简单的任务,它是?如果是这样,那该怎么办?我花了几个小时寻找一个解决方案,但我在想,也许我根本没有得到正则表达式逻辑。

+0

您正在使用哪种语言? –

+0

就像在编程语言中一样? JavaScript的。但我希望能够使用支持正则表达式的任何语言的通用解决方案,而无需使用任何语言特定的功能。只是一个简单的正则表达式'语句'或模式。 – James

+0

正则表达式在不同语言中的实现方式不同。例如,并非所有人都支持环视。 – adamdc78

回答

3

不知道你使用的是精确的语言,这是很难给出一个例子,但理论很简单:

如果你有一个复杂的任务,打破它。

在这种情况下,您只想对第一行进行操作。因此,继续在两个步骤:

  1. 确定第一线
  2. 在其上执行的操作。

使用JavaScript来作为例子,你的代码可能看起来像:

var input = 
    "HelloX dXudXe" + "\n" + 
    "How areX yXou?" + "\n" + 
    "FxIXne?"; 

var result = input.replace(/^.*/,function(m) { 
    return m.replace(/X/g,''); 
}); 

看我怎么第一抢到第一线,然后我就可以操作?这种问题的分解是一个很好的学习技巧;)

+0

你是如何抓住第一线的?由于连接,'input'包含所有3行。 – Barmar

+1

@Barmar'/^.*/'得到第一行。 –

+0

啊,现在我明白了。 – Barmar

0

将字符串拆分为多行,在第一行进行替换,然后重新加入它们。

var lines = input.split('\n'); 
lines[0] = lines[0].replace(/X/g, ''); 
input = lines.join('\n');