Объединить несколько операторов REGEX - PullRequest
1 голос
/ 04 октября 2011

У меня есть пример строки.

This should be **bold**, *indented* or ***bold and indented***.

Строка анализируется с использованием 3 регулярных выражений, которые запускаются один за другим, чтобы получить следующий результат:

This should be <b>bold</b>, <i>indented</i> or <b><i>bold and indented</i></b>.

Все просто и отлично работает. Тем не менее, я хотел бы сэкономить мне несколько строк (если это возможно, красивее и эффективнее, то почему бы и нет?) И объединить их. Чтобы сделать все замены в одном выражении регулярного выражения. Возможно ли это с дополнительной эффективностью? или я должен оставить все как есть? (даже если бы я хотел, я хотел бы увидеть возможное решение?)

Мои подходящие утверждения:

  • \*\*\*(.+?)\*\*\* -> <b><i>$1</b></i>
  • \*\*(.+?)\*\* -> <b>$1</b>
  • \*(.+?)\* -> <i>$1</i>

1 Ответ

2 голосов
/ 04 октября 2011

Честно говоря, хранить их как 3 отдельных регулярных выражения - это почти наверняка ...

  1. более читабельно
  2. Simpler
  3. (из-за № 1 и № 2) Более ремонтопригодны.

Меньше строк не всегда лучше, особенно , когда дело доходит до регулярных выражений.


Кроме того, на самом деле вам нужно только 2 регулярных выражения - жирный и курсив. Просто всегда сначала запускайте жирный шрифт:

***foo***

становится, после смелого регулярного выражения ...

*<b>foo</b>*

и регулярное выражение курсив делает это ...

<i><b>foo</b></i>

Какой вывод правильный. (Причина запуска жирного шрифта в первую очередь заключается в том, что курсив будет соответствовать *** как <i>*</i>, что неверно.)

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