Regex 正则表达式匹配项组,返回第n个匹配项并分配给数组

Regex 正则表达式匹配项组,返回第n个匹配项并分配给数组,regex,perl,Regex,Perl,你试过分开吗 像这样: @arr = ($content =~ /(x)(.*?)(x)/g$2/) my@topics=map{$\=~s/$//;$\}拆分(//,$txt); 当然,如果您的字符串在某个点上包含的内容不是。,则此操作将失败…使用零宽度断言来匹配您要匹配的部分之前和之后的内容,而不是尝试对匹配组执行此操作。这样,您只匹配该部分,全局匹配将返回一个包含所有事件的数组 my @topics = map{ $_ =~ s/<\/p>$//; $_ }split(

你试过分开吗

像这样:

@arr = ($content =~ /(x)(.*?)(x)/g$2/) 
my@topics=map{$\=~s/$//;$\}拆分(//,$txt);

当然,如果您的字符串在某个点上包含的内容不是

,则此操作将失败…

使用零宽度断言来匹配您要匹配的部分之前和之后的内容,而不是尝试对匹配组执行此操作。这样,您只匹配该部分,全局匹配将返回一个包含所有事件的数组

my @topics = map{  $_ =~ s/<\/p>$//; $_ }split( /<p><strong>/, $txt );

my@eachTopic=($content=~/(?您显然不熟悉Perl。您是否考虑过使用合适的HTML解析器?非常好,它允许您使用XPath短语来处理HTML文档。如果您想在上下文中显示数据,那么我可以编写一个有用的答案。如果不是HTML,那么它是什么?除非您正确解释您的问题,否则没有人可以帮助您。您知道吗你有一个XML文档,或者完全不同的东西?我不得不将你的问题标记为结束,因为不清楚你在问什么。我非常乐意帮助你,但是没有更多关于真实情况的信息,没有人能给出好的建议。顺便说一句,我在一次近距离投票审查中遇到了这个问题,现在有4个接近投票,b但我不同意。措辞可能很尴尬,但通过提供示例输入和预期结果,他可以非常清楚地说明他想要实现的目标。这就是为什么我们总是告诉人们提供示例的原因,正是因为试图用语言描述事物往往是模糊和含糊不清的。因此,结束一个问题是没有意义的eone这样做完全是因为措辞不清楚。任何查看示例输入和预期结果的人都应该清楚这个问题作为一个整体来决定是否重新打开。他所问的问题非常清楚。XML和HTML都不应该使用经过测试和可靠的解析器模块来处理。HTML::TreeBuilder很好。但是,它可以拆分!如果它可以拆分,一切都很好。这些问题有标记,并不意味着我们在解析HTML标记。这是一个一般性问题。我简化了它,使其看起来像HTML语法。@BytePasher这在这种情况下也不起作用。那“…”这意味着其中有一大堆日志文件数据,而且前后都有。@bytepusher:不,一切都不好。只要输入数据中有一种不寻常的模式,事情就会开始出错。我试图在对你之前答案的评论中解释,为OP提供工作代码应该在你的列表中排得很低f优先级。即使在这种情况下,推荐一个简单的基于文本的解决方案也是非常糟糕的建议,但要同情所有其他人,他们会接受你的建议,使用
split
来处理HTML作为方法。
my @topics = map{  $_ =~ s/<\/p>$//; $_ }split( /<p><strong>/, $txt );
my @eachTopic = ($content =~ /(?<=<p><strong>).*?(?=<\/p>)/g);