0

我想用连字符替换Markdown 列表中的星号

例子:

  • 1.0
    • 1.1
    • 1.2
  • 2
    • 2.1
      • 2.2

目前,我在Keyboard Maestro for Mac 中设置了一个单独的正则表达式模式,最多可设置三个缩进级别:

Keyboard Maestro 使用正则表达式模式搜索和替换

我想知道是否没有更聪明的方法可以做到这一点,并且可以解决各种缩进。

4

2 回答 2

1

在许多正则表达式搜索和替换系统中,您可以在替换中引用正则表达式中带括号的组,使用\1,\2等来引用每个连续的组。因此,例如,在 sed 你可以这样做:

sed -e 's/\(^[\t ]*\)\*/\1-/'

我不确定键盘大师是否为您提供了该选项。它提到它使用 ICU 正则表达式;如果它也使用他们的替换选项,那么您可以使用$1$2来指代替换。

如果没有,一切都不会丢失。您可以使用后向断言来匹配星号之前的空白序列,而不包括星号作为匹配的一部分;然后只需使用一个破折号作为您的替代品:

Search for: (?<=^[\t ]*)\*
Replace with: -
于 2013-10-26T06:06:59.923 回答
0

您可以使用子匹配组并在替换字符串中引用它们,如下所示:

正则表达式将您的行与列表项匹配:([\t ]*)\*(.*)

用于替换的字符串:\1-\2

于 2013-10-26T05:55:15.073 回答