2012-10-31 20 views
5

मैं mathjax प्रारूप में एक कुछ HTML पाठ है:माणिक regexp समीकरणों को बदलने के लिए

text = "an inline \\(f(x) = \frac{a}{b} \\) equation, a display equation \\[ F = m a \\] \n and another inline \\(y = x\\)" 

(नोट: समीकरणों, एकल स्लैश द्वारा सीमांकित कर रहे हैं जैसे \(, नहीं \\(, अतिरिक्त \ सिर्फ पहले एक भागने है रूबी पाठ के लिए)।

मैं आउटपुट प्राप्त करना चाहता हूं जो इसे प्रतिस्थापित करता है, देर से codecogs द्वारा बनाई गई छवि कहें, उदा।

desired_output = "an inline <img src="http://latex.codecogs.com/png.latex?f(x) = \frac{a}{b}\inline"/> equation, a display equation <img src="http://latex.codecogs.com/png.latex?F = m a"/> \n and another inline <img src="http://latex.codecogs.com/png.latex?y = x\inline"/> " 

रूबी का उपयोग करना। मैं कोशिश करता हूं:

desired = text.gsub("(\\[)(.*?)(\\])", "<img src=\"http://latex.codecogs.com/png.latex?\2\" />") 
desired = desired.gsub("(\\()(.*?)(\\))", "<img src=\"http://latex.codecogs.com/png.latex?\2\\inline\") 
desired 

लेकिन यह असफल है, केवल मूल इनपुट लौटा रहा है। मुझसे क्या छूट गया? मैं इस सवाल को उचित तरीके से कैसे बना सकता हूं?

+0

मामले किसी को भी इसके लिए लग रही है में, Jekyll प्लगइन मैं छवियों के साथ mathjax समीकरणों को बदलने के लिए है यहाँ लिखा है: https://github.com/cboettig/labnotebook/blob/32fcfcbc6f8d83b51d33d8d606ee1e51052dc4b0/_plugins/jekyll-labnotebook-plugins /codecogs.rb मदद के लिए @ जस्टिन-को धन्यवाद! – cboettig

उत्तर

1

प्रयास करें:

desired = text.gsub(/\\\[\s*(.*?)\s*\\\]/, "<img src=\"http://latex.codecogs.com/png.latex?\\1\"/>") 
desired = desired.gsub(/\\\(\s*(.*?)\s*\\\)/, "<img src=\"http://latex.codecogs.com/png.latex?\\1\inline\"/>") 
desired 

महत्वपूर्ण परिवर्तन है कि होना ही था:

+०१२३५१६४१०
  • gsub के लिए पहले पैरामीटर एक regex होना चाहिए (के रूप में एंथनी उल्लेख)
  • दूसरा पैरामीटर एक डबल-कोटेड स्ट्रिंग है, तो वापस संदर्भ \\2 (के बजाय सिर्फ \2) की तरह रहना होगा (देखें rdoc)
  • पहले पैरामीटर से बचने नहीं कर रहा था \

वहाँ अन्य छोटे स्वरूपण बातें (रिक्त स्थानों, आदि) के एक जोड़े थे।

+0

शानदार, इस काम को करने के लिए धन्यवाद। यह आश्चर्यजनक है कि भाषाओं के बीच कितना regexpr भिन्न हो सकता है। एक अच्छी व्याख्या और एक स्वच्छ reg अभिव्यक्ति के लिए धन्यवाद! – cboettig

0

सुनिश्चित नहीं हैं कि अपने regexp सही है अगर - लेकिन रूबी में, Regexp // द्वारा सीमांकित कर रहे हैं, इस तरह का प्रयास करें:

desired = text.gsub(/(\\[)(.*?)(\\])/, "<img src=\"http://latex.codecogs.com/png.latex?\2\" />") 

आप स्ट्रिंग substition करने के लिए कोशिश कर रहे थे, और निश्चित रूप से gsub एक नहीं मिल रहा था स्ट्रिंग वाली (\\[)(.*?)(\\])

संबंधित मुद्दे