2012-10-12 47 views
1

如何使用正則表達式轉換正則表達式來刪除字符,直到達到一定的點串

11111aA$xx1111xxdj$%%` 

aA$xx1111xxdj$%% 

因此,換句話說,我想刪除(或匹配)第一組1的。

+1

正則表達式在它自己實際上並沒有做通道字符替換 - 它只是匹配模式。大多數語言都有使用正則表達式來進行字符替換的方法,但是它們的實現是特定於語言的。你在處理什麼語言? –

+0

你使用什麼PL? – jomsk1e

回答

1

如果是這樣開始的時候,你可以使用這個:

^[1]* 

至於更換,這取決於語言。在PowerShell中,我這樣做:

[regex]::Replace("11111aA$xx1111xxdj$%%","^[1]*","") 

這將返回:

aA$xx1111xxdj$%% 
2

根據語言,你應該有一種方法來用正則表達式替換字符串。在Java中,你可以做這樣的:

String s = "11111aA$xx1111xxdj$%%"; 
String res = s.replaceAll("^1+", ""); 

^「錨」表示輸入的開頭必須匹配。 1+表示一個或多個1字符的序列。

這是一個link to ideone與此正在運行的程序。

C#中的同一程序:

var rx = new Regex("^1+"); 
var s = "11111aA$xx1111xxdj$%%"; 
var res = rx.Replace(s, ""); 
Console.WriteLine(res); 

link to ideone

一般來說,如果你想只在一個字符串的開頭進行匹配的話,添加^前綴你的表情;同樣,在末尾添加$會使匹配在輸入結束時僅接受字符串。

0

如果你只是想在字符串的開頭,以取代連續的「1」,替換爲空字符串如下:

^1+ 

如果連續的「1」並不一定是在字符串中(但你仍然只需要更換一個組)第一字符替換第一個捕獲組(通常\1$1)的內容如下:

1+(.*) 

注意,這是如果你只需要只有一個「r放置所有「功能,但大多數正則表達式實現還提供了一種方法來替換隻有一個匹配的實例,在這種情況下,您可以用空字符串替換1+

0

我不知道,但你可以試試這個 [^1](\w*\d*\W)* - 匹配所有作爲一個組除了「1」開始(n)的符號

0

在Javascript中

var str = '11111aA$xx1111xxdj$%%'; 
    var patt = /^1+/g; 
    str  = str.replace(patt,""); 
相關問題