如何解决正则表达式用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])\\*/
测试可使用但不能使用的短语:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。