Regex 正则表达式在标记之间更改文本

Regex 正则表达式在标记之间更改文本,regex,replace,html-content-extraction,Regex,Replace,Html Content Extraction,我在下面的布局中有一些代码,我正在使用textcrawler进行查找和替换 <a> Name=LineA epsium ask answer line=10 color=red </a> <a> Name=LineB Color=Blue </a> Name=LineA 厄普西姆 问 回答 直线=10 颜色=红色 Name=LineB 颜色=蓝色 现在的问题是我需要使用什么正则表达式来删除和之间的第二个代码块(\s*?Name\=Line

我在下面的布局中有一些代码,我正在使用textcrawler进行查找和替换

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

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

Name=LineA
厄普西姆
问
回答
直线=10
颜色=红色
Name=LineB
颜色=蓝色

现在的问题是我需要使用什么正则表达式来删除
之间的第二个代码块(\s*?Name\=LineB[\s\s]*?)
它捕获了
标记之间的所有文本,包括以文本
Name=LineB

开头的标记。在Perl中,我将执行以下操作:

$str =~ s~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~${1}New text$2~s;
$str=~s~ ^(.*?*?.*?).*(.*)$~${1}新文本$2~s;
第一组包含第二个块之前的所有内容
,第二组包含第二个块之后的所有内容

在php中:

$str = preg_replace('~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~', "${1}New text$2", $str);
$str=preg_replace('~^(.*?*?.*?.*?.*(.*)$~',“${1}新文本$2”,$str);
preg\u replace(“/([\s\s]*.*)/”,$replace,$original);

这将替换正文标记之间的全部内容。

您能告诉我们您尝试了什么吗?我尝试了(*),但它选择了全部内容为什么第二块代码比第一块更重要
*?
获取第一个块。你不需要括号。我想用其他东西替换第二个black,所以我想我需要用一个paranthesisOh来捕捉,然后是这样的:
(\s*Name=LineB.*)
(\s*Name=LineB[\s\s]*?)
?谢谢,这很好,但我不确定“文本爬虫”是否使用Perl或php@ThinkingCap:我不知道TextCrawler,但请尝试在搜索中使用正则表达式,并在替换字段中使用
${1}新文本$2
。+1或
s~ ^(.*?*?*?*).*(.*)$$${1}新的正文文本$2~s
如果只是替换中间的文本。我认为你的方向是正确的,除非我无法匹配/硬编码字符数,我正在考虑捕获标记之间的名称LineB。n@sln是正确的:
(\s*name\=LineB.*?)
应该匹配第二个块。尝试过之后,仍然无法获得该块:(
$str = preg_replace('~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~', "${1}New text$2", $str);
preg_replace("/<body>([\s\S]*.*)<\/body>/",$replace,$origional);