【发布时间】:2014-10-10 22:08:32
【问题描述】:
我有很多以 yaml 模式开头的降价文件,例如:
---
title: Miniarchi
postheaderimage:
-
img: Miniarchi-1.jpg
alt: Minimal Architecture
class: center
categories:
- Design
tags:
- Architecture
- Illustration
- Miniarchi
---
我将要处理并希望在所有文件中修改的部分是:
postheaderimage:
-
img: Miniarchi-1.jpg
alt: Minimal Architecture
我想要的样子是:
postheaderimage: Miniarchi-1.jpg
alt: Minimal Architecture
我已经想到了我认为应该如何完成的逻辑(使用正则表达式),但我不知道如何实现它。这是我想出的:
- 找到\w+(-\w+)+.jpg [匹配图像文件名,即本例中的Miniarchi-1.jpg]
- 存储在变量 $img 中
- 找到postheaderimage:
- 替换为 postheaderimage: $img
- find alt:\s\w.* [匹配图像 alt,即本例中的 Minimal Architecture]
- 存储在变量 $alt 中
- 找到\s{2}-\n\s{4}img:\s.{1,}\n\s{4}alt:\s.{1,} [匹配postheaderimage下的所有内容:]
- 替换为 $alt
我认为这可以使用 applescript 甚至 php 来解决,但我不知道如何。
如果需要我没有提到的更多信息,请询问,我很乐意澄清。
【问题讨论】:
-
如果你想处理用计算机语言编写的数据,你不需要一个正则表达式,而是一个解析器。对于 YML,有很多解析器,所以只需获取其中一个来处理您的文件。
-
你为什么不直接找到 img: 并替换为 postheaderimage
-
@Steve 谢谢。没这么想过。
标签: php regex applescript