正则表达式改变文本

问题描述:

我在下面的布局一些代码,即时通讯使用textcrawler做一个查找和替换正则表达式改变文本

<a> 
Name=LineA 
epsium 
ask 
answer 
line=10 
color=red 
</a> 

<a> 
Name=LineB 
Color=Blue 
</a> 

...

现在的问题是正则表达式我需要什么使用,以便除去之间<a> and </a>

+0

你能告诉我们你试过的东西吗? –

+0

我试过(。*),但它选择了整个东西 – EvenPrime

+1

为什么第二块代码比第一块更重要? '。*?'得到第一块。而且你不需要括号。 – sln

<a>(\s*?Name\=LineB[\S\s]*?)</a> 

它捕获与所述TE开始之间并包括<a></a>标签的所有文本代码的第二块xt Name=LineB

+0

我认为你会走向正确的方向,除非我不能匹配/硬编码字符的数量,我想在标签之间捕获名字LineB – EvenPrime

+0

然后@sln是对的:'(\ s * Name \ = LineB。* ?)'应该匹配第二块。 – Utensil

+0

试过,仍然无法获得块:( – EvenPrime

在Perl中,我会做:

$str =~ s~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~${1}New text$2~s; 

第一组包含第二块<a></a>,第二组后一切之前的一切。

在PHP中:

$str = preg_replace('~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~', "${1}New text$2", $str); 
+0

谢谢,这是所有伟大的,但我不知道如果“TextCrawler”使用Perl或PHP – EvenPrime

+0

@ThinkingCap:我不知道TextCrawler但尝试与正则表达式搜索和替换字段中的“$ {1}新文本$ 2”。 – Toto

+0

+1或's〜^(。*?。*?。*?)。*?(。*)$〜$ { 1}新的正文文本$ 2〜s',如果只是替换之间的文本。 – sln

preg_replace("/<body>([\s\S]*.*)<\/body>/",$replace,$origional); 

这将替代body标签之间的全部内容。

+0

请不要将[解决]添加到您的答案,这是为了让别人来决定... – NigelK