JavaScript 中的递归正则表达式模式
Recursive regex pattern in JavaScript
我知道这将是一个非常明显的答案,但我找不到任何关于如何做到这一点的信息。
我正在尝试在 HTML 字符串
中取消转义 <
和 >
我的测试输出字符串本质上是:
```php
>h2<Heading2>/h2<
```
`>h2<Heading2>/h2<`
>h2<Heading2>/h2<
所以在这个例子中,我们有 Github 风格的 Markdown,一个常规的 code
markdown 片段,然后是原始文本,它们都带有相同的 HTML 标签。我想取消转义原始标记(第三个)以实际成为 link。理想的输出应该是这样的。
```php
>h2<Heading2>/h2<
```
`>h2<Heading2>/h2<`
<h2>Heading2</h2>
我无法在同一行中获取多个 >
。
当前正则表达式:
/(?:.*?(>))/
这将获得第一个条目。
/(?:.*?(>))/g
这个获得第二个条目。我希望它能够获得每个条目。那么,只要扔掉刻度片就可以了。
/(?:```|`)(?:.*?(>)).*?(?:```|`)/gs
如果您打算为此任务使用正则表达式,您可以考虑以下几点:
var r = s.replace(/((`(?:``)?)[^`]*)|>/g, '<')
.replace(/((`(?:``)?)[^`]*)|</g, '>')
.replace(/`[<>]+/g, '`');
我知道这将是一个非常明显的答案,但我找不到任何关于如何做到这一点的信息。
我正在尝试在 HTML 字符串
中取消转义<
和 >
我的测试输出字符串本质上是:
```php
>h2<Heading2>/h2<
```
`>h2<Heading2>/h2<`
>h2<Heading2>/h2<
所以在这个例子中,我们有 Github 风格的 Markdown,一个常规的 code
markdown 片段,然后是原始文本,它们都带有相同的 HTML 标签。我想取消转义原始标记(第三个)以实际成为 link。理想的输出应该是这样的。
```php
>h2<Heading2>/h2<
```
`>h2<Heading2>/h2<`
<h2>Heading2</h2>
我无法在同一行中获取多个 >
。
当前正则表达式:
/(?:.*?(>))/
这将获得第一个条目。
/(?:.*?(>))/g
这个获得第二个条目。我希望它能够获得每个条目。那么,只要扔掉刻度片就可以了。
/(?:```|`)(?:.*?(>)).*?(?:```|`)/gs
如果您打算为此任务使用正则表达式,您可以考虑以下几点:
var r = s.replace(/((`(?:``)?)[^`]*)|>/g, '<')
.replace(/((`(?:``)?)[^`]*)|</g, '>')
.replace(/`[<>]+/g, '`');