2013-02-11 72 views
1

AS3 | Flash CS6 | Adobe Air 3.5AS3/AIR 3.5只替換部分字符串

我有一個非常長的字符串,最終將格式化爲XML。在字符串我沿着線的東西幾種情況:

<title>Some title</title> 

//the following line would need changed 
<title>Some title</garbage> 

<title>Some title2</title> 
<title>Some title3</title> 

//the following line would need changed 
<title>Someone's title & (his info)</garbage> 

//the following line should NOT change 
<another title>something else</garbage> 

我需要搜索和替換所有這些:

<title>(whatever is here)</garbage> 

,使他們:

<title>(whatever is here)</title> 

由於你可以看到我不能簡單地搜索和替換「垃圾」,因爲它不適用於每一個實例......我只想替換那些使用<標題> ...不是<其他標題>同時請注意,這是不確定的將是< title>和< /垃圾之間什麼字符>

所以,雖然我知道這是行不通......我在想沿着線的東西:

str = str.replace(/<title>\w+<\/garbage>/, "<title>\w+<\/title>"); 

我認爲答案是「捕獲的子串」在這個網頁上,但到目前爲止沒有運氣: http://www.sevenson.com.au/actionscript/testing-regular-expressions/

好像在這一點上,我在隨機的東西只是堵,因此更有感覺只是尋求幫助。

任何意見表示讚賞。

回答

0

匹配任何符號<title>之前</garbage>

str = str.replace(/(<title>.[^<]+)<\/garbage>/, "$1</title>"); 

http://regexr.com?33nog

+0

後完美!非常感謝。我無法做到這一點。 – user1129107 2013-02-11 08:37:39

+0

我發現了這個問題。如果(無論這裏是什麼)只有一個字符長,這個表達式不起作用。有關如何解決這個問題的任何建議?對於2個或更多的角色,這很棒。 – user1129107 2013-02-12 03:12:42

+0

編輯:使其非貪心修復它。 /(。[^ <] +)<\/garbage> /, 「$ 1」 變爲 /(。?[^ <] +)<\/garbage> /, 「$ 1」 – user1129107 2013-02-12 03:28:40