需要在 pre 标记中保留换行符,同时从所有其他文本中删除换行符
我通过表单提交了用户提交的文本,该表单可以在预标记中包含多个文本块。我需要删除所有换行符,而不删除 PRE 标记中的换行符,并保留任何其他用户格式。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我通过表单提交了用户提交的文本,该表单可以在预标记中包含多个文本块。我需要删除所有换行符,而不删除 PRE 标记中的换行符,并保留任何其他用户格式。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
您需要在此处使用条件子模式。假设
标签是平衡的,以下代码应该适合您:
OUTPUT
如您所见
之外的 >\n 已被删除。
此代码在字符串中的
标记< /强>。当找到第一个
\n
时,搜索的单次迭代就会停止,然后用第一个捕获的组(即\n
之前的文本)替换匹配的文本。You will need to use conditional subpatterns here. Assuming
<pre>
and</pre>
tags are balanced, following code should work for you:OUTPUT
As you can see
\n
outside<pre>
and</pre>
have been removed.This code searches for 0 or more occurrences of text between
<pre>
tag in the string and if found then grabs text until</pre>
tag. Single iteration of search stops when first\n
is found and and then it replaces the matched text with first captured group (i.e. text that came before\n
).请注意,我没有对此进行测试。它还假设:
- 您的
Note that I didn't test this. It also assumes that:
- Your
<pre>
tags are all lowercase, with no attributes- You're trying to remove only newline characters, not
\r\n