我正在寻找能够在文本中找到shortcode字符串的ruby兼容正则表达式。
正则表达式能够识别以下字符串:
[shortcode]
[shortcode=value]
[shortcode key=value]
[shortcode=value]Text[/shortcode]
[shortcode key1=value1 key2=value2]Text[/shortcode]
[shortcode]Text[/shortcode]
答案 0 :(得分:1)
调整示例中提供的解决方案:
\[shortcode(.*?)\]((.*?)\[\/shortcode\])?
其中$1
将获得第一个shortcode
和最近的]
之间的所有内容,而$3
将是[shortcode...]
和[/shortcode]
之间的文字}。
至于从正则表达式中获取任意长度和顺序的已解析属性列表,不能,你不能这样做。您可以在$1
中查找特定属性,例如:
key=(.*?)\b
但要获得完整列表,您需要使用其他方法(可能Shortcode API会有帮助)来标记/解析$1
。
答案 1 :(得分:0)
这个怎么样?
/\[(?<shortcode>([^\]]+))(.+?)?\](?:(.+?)?\[\/\k<shortcode>\])?/.match('[blah]whatever[/blah]')
# => #<MatchData "[blah]whatever[/blah]" shortcode:"blah">
(刚刚在您提供的链接的正则表达式中将$shortcode
替换为(?<shortcode>([^\]]+))
,而为第二个链接添加了\k<shortcode>