2014-09-30 44 views
2

比方說,我有以下文字:是否可以替換正則表達式序列中的特定字符?

#Foo foo bar bar 
foo bar foo 
#bar Foo Foo 
foo bar 

比方說,我想在與#字符開頭線-字符替換spacebars。所以輸出應該是:

#Foo-foo-bar-bar 
foo bar foo 
#bar-Foo-Foo 
foo bar 

我知道我可以找到使用此正則表達式的那些行:

/^#(.*)$/gm 

但我實際上可以以任何方式改變那些$1序列?

P.S.我在記事本+ +中使用正則表達式來將一些數據從excel轉換成代碼(實際上非​​常方便)。

PS2我也必須替換文本中的一些製表符,並在Avinash Raj的答案中修改了一下後,我發現我可以使用這個正則表達式來做到這一點...除了它沒有工作打算,但Avinash拉傑很不夠用這個正則表達式幫助。

/(?:^#|(?<!^)\G)[\S ]*\K\t/gm 

DEMO

+0

您的預期輸出是什麼? – 2014-09-30 09:39:14

+0

@AvinashRaj有效的點,完全忘了那個(-_-;) – jahu 2014-09-30 09:40:03

+0

@AvinashRaj增加了預期的輸出到問題 – jahu 2014-09-30 09:43:00

回答

4

我覺得記事本+ +將支持\G。主持人\G匹配前一場比賽結束的位置。

正則表達式:

(?:^#|(?<!^)\G)\S*\K[ \t]+ 

替換字符串:

- 

DEMO

如果你想與-取代個人的空間,然後嘗試下面的正則表達式,

(?:^#|(?<!^)\G)\S*\K[ \t] 
+0

爲什麼'\ S'?它只是導致模式不能與'#foo \ t bar'一起使用。爲什麼'+'?這會將多個連續空格轉換爲單個短劃線。 – 2014-09-30 09:49:01

+0

@Rawing我認爲它現在適用於所有情況。或者簡單地使用'\ h'而不是'[\ t]' – 2014-09-30 09:53:12

+2

+1,但你可以添加關於它如何工作的解釋。 – Toto 2014-09-30 09:54:17