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

Ada*_*dam 4 regex objective-c

有人有一个很好的正则表达式吗?例如:

This is *an* example
Run Code Online (Sandbox Code Playgroud)

应该成为

This is <b>an</b> example
Run Code Online (Sandbox Code Playgroud)

我需要在Objective C中运行它,但我可能会自己解决这个问题.这是正在给我带来麻烦的正则表达式(如此生锈......).这是我到目前为止所拥有的:

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

但它似乎没有奏效.有任何想法吗?谢谢 :)

编辑:谢谢你的答案:)如果有人想知道Objective-C中的这个是什么,使用RegexKitLite:

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

再次编辑:实际上,要包含更多字符以进行粗体处理,我将其更改为:

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

nic*_*ine 8

你为什么不这样做\*[^*]+?\*并用它替换<b>$1<\/b>

  • 对于像我这样的非JavaScripters:`s.replace(/\*([^*] +?)\*/g,"<b> $ 1 <\/b>");` (3认同)

And*_*per 5

你只匹配*s 之间的一个字符.试试这个:

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

或者确保*s 之间至少有一个字符:

s/\*([0-9a-zA-Z ]+?)\*/<b>$1<\/b>/g
Run Code Online (Sandbox Code Playgroud)