Как изменить это регулярное выражение, чтобы оно не соответствовало * * * - PullRequest
2 голосов
/ 10 февраля 2020
(?<!\*)\*([^*]+?)\*(?!\*)/g

Это в основном регулярное выражение для соответствия курсиву Markdown. Он будет соответствовать следующим ситуациям:

This *is* Markdown.
This *is Markdown.*
*This* is *Markdown.*
*This is Markdown.*

Примечание: здесь есть минусы, чтобы избежать совпадения таких случаев, как этот This is **Markdown.**

Это работает ... почти. Это также соответствует * * *, который я использую как разрывы раздела. Например:

* * *

This *is* Markdown.

* * *

Как изменить мое регулярное выражение, чтобы оно не соответствовало этим разрывам разделов? Я действительно застрял.

RegExr: https://regexr.com/4tv5n

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020

Согласно документации существует более допустимые комбинации горизонтальных правил.

Мне кажется, что эта проще и лучше отражает суть правила:

\*(?!\s*\*)([^*\n]+)\*

Это также быстрее, так как требуется 89 шагов вместо 204 шагов .

1 голос
/ 10 февраля 2020

Этого может быть достаточно (?<!\*)\*([^ ][^*]*?)\*(?!\*). Для примера хотя бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...