2011-09-30 14 views
6

काम करने वाला प्रतीत नहीं होता है। मैं एक स्ट्रिंग को एक सरणी में विभाजित करना चाहता हूं जहां "|" से पहले डिलीमीटर ", " है। इसका मतलब है कि स्ट्रिंगरूबी में रीगेक्स नकारात्मक दिखने वाला काम

"foo, ba|, r, arg" 

मैं इस regex का उपयोग करने के लिए कोशिश कर रहा हूँ

`["foo", "ba|, r", "arg"]` 

में परिणाम चाहिए: (?<!\|), जो http://regexhero.net/tester/ में काम करता है लेकिन जब मैं रूबी में

args.split(/(?<!\|), /) 

कोशिश, मैं एक त्रुटि: undefined (?...) sequence: /(?<!\|), /

+1

यह 1.9 में काम करता है, इसलिए यदि आप अपनी रूबी स्थापना को अपग्रेड कर सकते हैं, तो आगे बढ़ें और ऐसा करें। –

+0

@ माइकल कोहल जो मैंने किया है :) – tybro0103

+0

इसके अलावा, रुबी रेगेक्स परीक्षण के लिए, मैं [रूबुलर] (http://rubular.com/) का उपयोग करता हूं। – Pakman

उत्तर

10

रुबी का रेगेक्स इंजन सुपर नहीं है पोर्ट देखो (अभी तक)।

आपको 1.9 पर स्विच करना होगा या Oniguruma का उपयोग करना होगा।


अगर वह एक विकल्प नहीं है, तो आप |, के लिए खोज और मार्कर के कुछ प्रकार के साथ यह जगह ले सकता है। सब कुछ कहा और किया जाने के बाद, |, वापस रखो।

तुम भी तरह एक regex की कोशिश कर सकते हैं:

/(?:[^|]),/

लेकिन स्पष्ट रूप से (?:[^|]) शून्य-चौड़ाई, आप बाद में कुछ अतिरिक्त काम करने की आवश्यकता होगी, जिसका मतलब है नहीं है।

+0

ध्यान दें कि रूबी अब कम से कम 1.9.3 के रूप में नकारात्मक दिखने का समर्थन करता है: http://ruby-doc.org/core-1.9.3/Regexp.html – filsa

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