Regex 在perl中查找匹配字符串的第一次和最后一次出现
要为一组Regex 在perl中查找匹配字符串的第一次和最后一次出现,regex,perl,Regex,Perl,要为一组标记插入打开和关闭元素 输入 Para1 帕拉2 帕拉3 预期产量 <div> <para>Para1</para> <para>Para2</para> <para>Para3</para> </div> 帕拉1 帕拉2 帕拉3 如何找到第一个和最后一个出现的([^\只需将regexp从第一个跨越到最后一个,并将放在它周围:s#(*)\n$1\n\s 编辑:正如
标记插入打开和关闭元素
输入
Para1
帕拉2
帕拉3
预期产量
<div>
<para>Para1</para>
<para>Para2</para>
<para>Para3</para>
</div>
帕拉1
帕拉2
帕拉3
如何找到第一个和最后一个出现的
([^\只需将regexp从第一个跨越到最后一个,并将放在它周围:s#(*)\n$1\n\s
编辑:正如@mbethke所注意到的,要想让
跨越多个换行符,你必须使用。如果你的输入包含换行符,不要忘记regexp的/s修饰符。另一个想法:为什么要手工操作呢?像Mojo::DOM
这样的模块的存在使得这非常简单和安全。简单的手工制作的regexp是u通常很脆弱,只有当你很了解你的输入并且速度非常重要时才是一个好主意。我试图通过将变量变成1来识别第一个集,比如$I=1;$I=$I+1;如果$I=1,那么它是第一个。但是我找不到最后一个。用这种方式找到了什么想法吗?我真的不明白你的意思;my regexp将在一次尝试中跨越整个
图形集。请不要为此作业使用正则表达式。它们是错误的工具。说真的。它们不太擅长“处理”标记语言,如XML和HTML。请参阅:使用语法分析器。如果这是HTML,请使用HTML语法分析器。如果是XML,请使用XML语法分析器。(有一些共同点,XML更严格)同意,OP正在解释他想做什么,但不是为什么他想做。我们首先需要这些信息,以便能够给出正确的建议。
<div>
<para>Para1</para>
<para>Para2</para>
<para>Para3</para>
</div>