2013-02-11 23 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