我想用连字符替换Markdown 列表中的星号。
例子:
- 1.0
- 1.1
- 1.2
- 2
- 2.1
- 2.2
目前,我在Keyboard Maestro for Mac 中设置了一个单独的正则表达式模式,最多可设置三个缩进级别:
我想知道是否没有更聪明的方法可以做到这一点,并且可以解决各种缩进。
我想用连字符替换Markdown 列表中的星号。
例子:
- 1.0
- 1.1
- 1.2
- 2
- 2.1
- 2.2
目前,我在Keyboard Maestro for Mac 中设置了一个单独的正则表达式模式,最多可设置三个缩进级别:
我想知道是否没有更聪明的方法可以做到这一点,并且可以解决各种缩进。
在许多正则表达式搜索和替换系统中,您可以在替换中引用正则表达式中带括号的组,使用\1
,\2
等来引用每个连续的组。因此,例如,在 sed 你可以这样做:
sed -e 's/\(^[\t ]*\)\*/\1-/'
我不确定键盘大师是否为您提供了该选项。它提到它使用 ICU 正则表达式;如果它也使用他们的替换选项,那么您可以使用$1
等$2
来指代替换。
如果没有,一切都不会丢失。您可以使用后向断言来匹配星号之前的空白序列,而不包括星号作为匹配的一部分;然后只需使用一个破折号作为您的替代品:
Search for: (?<=^[\t ]*)\*
Replace with: -
您可以使用子匹配组并在替换字符串中引用它们,如下所示:
正则表达式将您的行与列表项匹配:([\t ]*)\*(.*)
用于替换的字符串:\1-\2