2013-01-09 65 views
-2

我正在尋找一個紅寶石兼容的正則表達式,它能夠在文本中找到shortcode字符串。ruby​​正則表達式格式的短代碼語法

的正則表達式將能夠識別以下字符串:

  • [shortcode]
  • [shortcode=value]
  • [shortcode key=value]
  • [shortcode=value]Text[/shortcode]
  • [shortcode key1=value1 key2=value2]Text[/shortcode]
  • [shortcode]Text[/shortcode]
+1

請花時間顯示輸入樣本和您的預期結果。還顯示您爲解決此問題而編寫的代碼。 –

+1

PHP和Ruby regexp的語法有很大的不同,因此很難從一個轉換到另一個。 –

+0

@KeithThompson是的,他們這樣做。 – lukemh

回答

1

修剪下來的例子提供的解決方案:

\[shortcode(.*?)\]((.*?)\[\/shortcode\])? 

$1將得到第一個shortcode和最近的]之間的所有內容,而$3將會在之間和[/shortcode]

至於從正則表達式得到任意長度和順序的解析屬性列表,不,你不能這樣做。你也許可以尋找一個特定屬性的$1類似:

key=(.*?)\b 

但要獲得完整的列表,你需要使用其他方法(也許是Shortcode API將幫助)來標記/解析$1

0

這是怎麼回事?

/\[(?<shortcode>([^\]]+))(.+?)?\](?:(.+?)?\[\/\k<shortcode>\])?/.match('[blah]whatever[/blah]') 
# => #<MatchData "[blah]whatever[/blah]" shortcode:"blah"> 

(剛剛更換$shortcode通過(?<shortcode>([^\]]+))你給的鏈接,並\k<shortcode>爲第二個的正則表達式內)