我正在尋找一個紅寶石兼容的正則表達式,它能夠在文本中找到shortcode字符串。ruby正則表達式格式的短代碼語法
的正則表達式將能夠識別以下字符串:
[shortcode]
[shortcode=value]
[shortcode key=value]
[shortcode=value]Text[/shortcode]
[shortcode key1=value1 key2=value2]Text[/shortcode]
[shortcode]Text[/shortcode]
我正在尋找一個紅寶石兼容的正則表達式,它能夠在文本中找到shortcode字符串。ruby正則表達式格式的短代碼語法
的正則表達式將能夠識別以下字符串:
[shortcode]
[shortcode=value]
[shortcode key=value]
[shortcode=value]Text[/shortcode]
[shortcode key1=value1 key2=value2]Text[/shortcode]
[shortcode]Text[/shortcode]
修剪下來的例子提供的解決方案:
\[shortcode(.*?)\]((.*?)\[\/shortcode\])?
凡$1
將得到第一個shortcode
和最近的]
之間的所有內容,而$3
將會在之間和[/shortcode]
。
至於從正則表達式得到任意長度和順序的解析屬性列表,不,你不能這樣做。你也許可以尋找一個特定屬性的$1
類似:
key=(.*?)\b
但要獲得完整的列表,你需要使用其他方法(也許是Shortcode API將幫助)來標記/解析$1
。
這是怎麼回事?
/\[(?<shortcode>([^\]]+))(.+?)?\](?:(.+?)?\[\/\k<shortcode>\])?/.match('[blah]whatever[/blah]')
# => #<MatchData "[blah]whatever[/blah]" shortcode:"blah">
(剛剛更換$shortcode
通過(?<shortcode>([^\]]+))
你給的鏈接,並\k<shortcode>
爲第二個的正則表達式內)
請花時間顯示輸入樣本和您的預期結果。還顯示您爲解決此問題而編寫的代碼。 –
PHP和Ruby regexp的語法有很大的不同,因此很難從一個轉換到另一個。 –
@KeithThompson是的,他們這樣做。 – lukemh