2012-12-04 101 views
0

替換字符我有以下字符串3}HFB}4AF4}1 -M}1.正則表達式零

...我已經尋找使用正則表達式字符串:

([0-9])(\})([A-Z]{3})(\})([0-9][A-Z]{2}[0-9])(\})([0-9])(\s\-)([A-Z])(\})([0-9]). 

我想0更換}。我正在尋找的結果是30HFB04AF401-M01,任何援助appriciated。我使用的工具是正則表達式巴迪

+1

如果你指定要使用正則表達式用什麼語言或程序這將是非常方便但通常只是s /}/0/g的問題。順便說一句,在你的正則表達式中的所有括號是多餘的。 – kompas

+0

你不需要告訴我們你正在使用的工具..需要告訴我們你正在使用的'language'! – Anirudha

+0

@ Some1.Kill.The.DJ:據我所知正則表達式好友使用相同的正則表達式方言爲.NET –

回答

1

一個可能解決方案

問題解決了嗎?在JavaScript中至少:-)

"3}HFB}4AF4}1 -M}1".replace(/\}/g, "0"); 
// "30HFB04AF401 -M01" 

我錯過了一點,對吧?

假設語言是JavaScript,我們可以寫類似

"dfghj456783}HFB}4AF4}1 -M}1fghjkl8765".replace(/(?:[\d\w\s]+)([0-9]}[A-Z]{3}}[0-9][A-Z]{2}[0-9]}[0-9] -[A-Z]}[0-9])(?:[\d\w\s]+)/g, function() { 
    return arguments[1].replace(/}/g, "0"); 
}); 

什麼其他語言的可能,雖然可能是一個不同的故事。

嘗試the home of RegexBuddy瞭解詳情。

+1

「我認爲需要更多的細節」將是一個評論,使用它作爲你的標題答案不是一個好主意。我不知道你是否錯過了這一點,給出的正則表達式只是最簡單的匹配整個字符串而沒有指定字符和小數的字符串。 –

+0

@owlstead感謝您提出改變標題的建議。完成。很難知道在發佈時添加哪些例外情況。我假設目標字符串被埋在很多非常相似的文本中,所以最好猜測。我很欣賞這些反饋。我是新的:-)仍然找到我的腳。在時間上並不新鮮;新的貢獻,我以前剛剛閱讀。必須在回答之前學習東西。時間回饋\ o/ –

+0

我仍然在學習正則表達式的過程中(這就是爲什麼我正在閱讀這些問題),並且我剛剛發現無需轉義大括號'{}'。所以我調整了代碼。 –

0

所以,你已經有了一個表達式查找字符串的實例。現在既可以使用基團替換的字符,或者可以使用一個單獨的正則表達式對你找到的字符串,簡單地替換內group(0)}字符(其爲輸入的整個匹配的一部分)。我肯定會喜歡後者。

弗雷德似乎已經爲您創建的替換方法了,所以我就不在這裏重複了。

0

我設法找到一個解決方案,以通過正則表達式巴迪應用於JGSoft Lanugage的格式化,感謝所有提供建議,幫助我引導我的思想方向是正確的。

解決方案(我還是用正則表達式初學者所以語法可能不是efficent,但它的工作!)

使用組名稱,而不是正則表達式assiging後向引用和$語法組。

因此在字符串3}HFB}4AF4}1 -M}1或任何類似的字符串中替換0}。我用下面的搜索和替換語法

搜索:(?<Gp1>([0-9]))(?:})(?<Gp2>([A-Z]){3})(?:})(?<Gp3>([0-9])([A-Z]{2})([0-9]))(?:})(?<Gp4>([0-9]))(?:\s-)(?<Gp5>([A-Z]))(?:})(?<Gp6>[0-9])

替換爲:${Gp1}0${Gp2}0${Gp3}0${Gp4}-${Gp5}0${Gp6}

結果:30HFB04AF401-M01