我使用
question中提供的答案替换了预标签之外的所有换行符.
\n(?![^<]*<\/pre>)
例如,输入:
<p>Test contennt for regex with line breaks</p> <pre>code block with multi line content working fine</pre> <pre class="brush:C#"> test line break before open paranthesis < is not working fine line breaks after paranthesis is accepted </pre>
输出是
<p>Test contennt for regexwith line breaks</p><pre>code block with multi line content working fine</pre><pre class="brush:C#">test line break before open paranthesis < is not working fine line breaks after paranthesis is accepted </pre>
这是不正确的 – 并非所有换行都被删除.
解决方法
试试这个:
/\n(?=((?!<\/pre).)*?(<pre|$))/sg
这个想法是有一个很大的前瞻性.该
((?!<\/pre).)*?
重复匹配任何字符(包括带有.的换行符),然后是
(<pre|$)
要求上述字符不是<在< / pre.然后,匹配< pre(表示原始换行符不在< pre之前,或匹配文件末尾). https://regex101.com/r/cjZQO9/2
随着输入
<p>Test contennt for regex with line breaks</p> <pre>code block with multi line content working fine</pre> text more text <pre class="brush:C#"> test line break before open paranthesis < is not working fine line breaks after paranthesis is accepted </pre> text
输出是
<p>Test contennt for regexwith line breaks</p><pre>code block with multi line content working fine</pre>textmore text<pre class="brush:C#"> test line break before open paranthesis < is not working fine line breaks after paranthesis is accepted </pre>text
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。