正则表达式将 BBCode 分成几部分
我有这个:
str = "some html code [img]......[/img] some html code [img]......[/img]"
我想得到这个:
["[img]......[/img]","[img]......[/img]"]
I have this:
str = "some html code [img]......[/img] some html code [img]......[/img]"
and I want to get this:
["[img]......[/img]","[img]......[/img]"]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
请不要使用 BBCode。这是邪恶。
尝试使用用户友好的标记语言,例如 Markdown (这就是 Stack Overflow 使用的)或纺织品。
它们都有 Ruby 解析器:
如果您仍然不想听从我的建议并选择使用 BBCode,请不要重新发明轮子并使用 BBCode 解析器。要直接回答您的问题,有最不理想的选择:使用正则表达式。
如 rubular 所示。虽然我会使用
/\[img\](.*?)\[\/img\]/
,所以它会提取img
标签内的内容。请注意,这是相当脆弱的,如果存在嵌套的img
标签,则会损坏。因此,建议使用解析器。Please don't use BBCode. It's evil.
Try to use a user-friendlier markup language, like Markdown (that's what Stack Overflow uses) or Textile.
Both of them have parsers for Ruby:
If you still don't want to heed to my advice and choose to go with BBCode, don't reinvent the wheel and use a BBCode parser. To answer your question directly, there is the least desirable option: use regex.
As seen on rubular. Although I would use
/\[img\](.*?)\[\/img\]/
, so it will extract the contents inside theimg
tags. Note that this is fairly fragile and will break if there are nestedimg
tags. Hence, the advice to use a parser.请记住,这是一个非常具体的答案,基于您的具体问题。更改
str
,例如,在图像标签中添加图像标签,以及 一切地狱都会崩溃。Keep in mind that this is a very specific answer that is based on your exact question. Change
str
by, say, adding an image tag within an image tag, and all Hell will break loose.Google 代码中有一个 ruby BBCODE 解析器。
不要为此使用正则表达式。
There is a ruby BBCODE parser at Google Code.
Don't use regex for this.