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

时间:2011-05-31 01:19:04

标签: objective-c regex

有没有人有一个很好的正则表达式来做到这一点?例如:

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 个答案:

答案 0 :(得分:8)

为什么不执行\*[^*]+?\*并将其替换为<b>$1<\/b>

答案 1 :(得分:5)

您只匹配*之间的一个字符。试试这个:

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

或确保* s:

之间至少有一个字符
s/\*([0-9a-zA-Z ]+?)\*/<b>$1<\/b>/g

答案 2 :(得分:1)

这一个正则表达式适用于我(JavaScript)

x.match(/\B\*[^*]+\*\B/g)  

答案 3 :(得分:0)

我写了一个稍微复杂些的版本,以确保星号始终在边界处,因此它忽略了悬挂的星形字符:

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

Test phrases与之兼容,但不兼容:

enter image description here