正则表达式用html粗体标记替换星号字符

问题描述

| 有人有好的正则表达式可以做到这一点吗?例如:
This is *an* example
应该成为
This is <b>an</b> example
我需要在目标C中运行它,但是我可以自己完成一些工作。正则表达式给我带来麻烦(太生锈了……)。这是我到目前为止的内容
s/\\*([0-9a-zA-Z ])\\*/<b>$1<\\/b>/g
但这似乎不起作用。有任何想法吗?谢谢 :) 编辑:感谢您的回答:)如果有人想知道使用RegexKitLite在Objective-C中是什么样子:
Nsstring *textWithBoldTags = [inputText stringByReplacingOccurrencesOFregex:@\"\\\\*([0-9a-zA-Z ]+?)\\\\*\" withString:@\"<b>$1<\\\\/b>\"];
再次编辑:实际上,为了包含更多的粗体字符,我将其更改为:
Nsstring *textWithBoldTags = [inputText stringByReplacingOccurrencesOFregex:@\"\\\\*([^\\\\*]+?)\\\\*\" withString:@\"<b>$1<\\\\/b>\"];
    

解决方法

        您只在ѭ5之间匹配一个字符。尝试这个:
s/\\*([0-9a-zA-Z ]*?)\\*/<b>$1<\\/b>/g
或确保在5个字符之间至少有一个字符:
s/\\*([0-9a-zA-Z ]+?)\\*/<b>$1<\\/b>/g
    ,        您为什么不只做
\\*[^*]+?\\*
并用
<b>$1<\\/b>
代替呢?     ,        这个正则表达式适用于我(JavaScript)
x.match(/\\B\\*[^*]+\\*\\B/g)  
    ,        我写了一个稍微复杂些的版本,以确保星号始终在边界处,因此它忽略了悬挂的星形字符:
/\\*([^\\s][^\\*]+?[^\\s])\\*/
测试可使用但不能使用的短语: