2015-04-30 34 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');