regex - 正则表达式 -> 检测模式 -> 将其移动到行首
问题描述
这是我第一次使用这个平台,因为我不可能找到解决方案。
我有这个 html 代码:
<img ...></img><a ...><span ...
我需要这个:
<a ...><img ...></img><span ...
...
模式的内容(如)在哪里,<img.*.</img>
因为它将以批量方式完成并且信息会发生变化。该文件具有以下格式:
<img ...></img><a ...><span ...
.....
<img ...></img><a ...><span ...
.....
<img ...></img><a ...><span ...
.....
<img ...></img><a ...><span ...
你可以猜到,我需要把标签放在<img>
标签里面<a>
。我试图将模式<a.*.>
移到行首,但没有成功。
解决方案
您通常不应该使用正则表达式来操作 HTML 内容,这些内容可能是嵌套的并且具有其他复杂性。但是,假设您的<img>
和<a>
标签始终只是一个级别,您可以在 Sed 中尝试以下查找和替换:
echo "<img ...></img><a ...><span ..." | sed 's/\(<img[^>]*><\/img>\)\(<a[^>]*>\)/\2\1/'
这打印:
<a ...><img ...></img><span ...
这是一个更通用的解决方案,也更易于阅读:
Find: (<img[^>]*><\/img>)(<a[^>]*>)
Replace: $2$1
演示
该解决方案仅在两个单独的组中捕获$1
and $2
、<img>
and<a>
标记。然后,在替换过程中,它会交换两个标签以提供您想要的顺序。
推荐阅读
- java - 语法问题。如何以与我在评论底部填充双精度数组的方式相同的方式填充双精度列表
- tomcat - 无法在tomcat 8中登录管理器应用程序
- r - 用空格 pt2 替换所有分号
- python - 如何为两个矩阵创建卷积函数?
- c++ - 向 vulkan 管道添加额外的 UBO 会停止所有几何渲染
- electron - 无法在 mac 和 windows 上为电子 5.0.10 安装 node-libcurl
- c# - 如何在 C# 中插入具有某些因素的数组?
- url-rewriting - IIS 10 - URL 重写规则以阻止对 servername 的直接请求,但来自 SOAPUI 的请求除外
- spring-boot - 服务同步问题
- php - Generate Word File in Laravel PHPWord - problem with add blade