Regex для замены символов звездочки на html жирный тег - PullRequest
4 голосов
/ 31 мая 2011

У кого-нибудь есть хорошее регулярное выражение, чтобы сделать это? Например:

This is *an* example

должно стать

This is <b>an</b> example

Мне нужно запустить это в Objective C, но я, вероятно, смогу решить это самостоятельно. Это регулярное выражение, которое доставляет мне неприятности (так ржаво ...). Вот что у меня есть:

s/\*([0-9a-zA-Z ])\*/<b>$1<\/b>/g

Но, похоже, это не работает. Есть идеи? Спасибо:)

РЕДАКТИРОВАТЬ: Спасибо за ответ :) Если кому-то интересно, как это выглядит в Objective-C, используйте RegexKitLite:

NSString *textWithBoldTags = [inputText stringByReplacingOccurrencesOfRegex:@"\\*([0-9a-zA-Z ]+?)\\*" withString:@"<b>$1<\\/b>"];

ВНОВЬ РЕДАКТИРОВАТЬ: На самом деле, чтобы включить больше символов для полужирного шрифта, я изменил его на:

NSString *textWithBoldTags = [inputText stringByReplacingOccurrencesOfRegex:@"\\*([^\\*]+?)\\*" withString:@"<b>$1<\\/b>"];

Ответы [ 4 ]

8 голосов
/ 31 мая 2011

Почему бы вам просто не сделать \*[^*]+?\* и заменить его на <b>$1<\/b>?

5 голосов
/ 31 мая 2011

Вы соответствуете только одному символу между * s. Попробуйте это:

s/\*([0-9a-zA-Z ]*?)\*/<b>$1<\/b>/g

или чтобы убедиться, что между * s есть хотя бы один символ:

s/\*([0-9a-zA-Z ]+?)\*/<b>$1<\/b>/g
1 голос
/ 10 января 2012

Это регулярное выражение работает для меня (JavaScript)

x.match(/\B\*[^*]+\*\B/g)  
0 голосов
/ 02 июля 2019

Я написал немного более сложную версию, которая гарантирует, что звездочка всегда находится на границе, поэтому она игнорирует висячие символы звездочки:

/\*([^\s][^\*]+?[^\s])\*/

Тестовые фразы скоторый работает и не работает:

enter image description here

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