问题描述
|
有人有好的正则表达式可以做到这一点吗?例如:
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])\\*/
测试可使用但不能使用的短语: