Regex त्रुटि समाप्त होने में त्रुटि]

मैं स्ट्रिंग से दिनांक कैप्चर करने के लिए gskinner regex सहायक साइट का उपयोग कर रहा हूं और यह ठीक काम करता है। लेकिन मेरी PHP लिपि में फेंकता है और त्रुटि।

मैं जो खोज रहा हूं वह स्ट्रिंग के भीतर की तारीख है।

26 नवंबर 2013 10:17 अपराह्न

$string = "The following web lead was received at Nov 26 2013 10:17PM Source: 420 Source: Internet - Organic (Free) Leads Referral Fee:  none";  

$datePattern = '/(?<=received at )(?:[^])*?(?=Source)/';
preg_match($datePattern,$string,$matches);
print_r($matches);

मुझे जो त्रुटि मिल रही है वह है

चेतावनी: preg_match (): संकलन विफल: अनुपलब्ध टर्मिनल के लिए कैरेक्टर क्लास के लिए 36 में ऑफसेट 36: \ wamp \ www \ test \ index.php लाइन 114 पर

मुझे समझ में नहीं आता कि यह gskinner टूल में ठीक क्यों काम करता है लेकिन मेरी स्क्रिप्ट में विफल रहता है। यह regex समुदाय सबमिट अभिव्यक्तियों में से एक है क्योंकि regex की बात आती है जब मैं पूरी तरह से अक्षम हूं।

किसी भी मदद के लिए धन्यवाद।

0
jordanm ... वाक्यविन्यास त्रुटि तय की। लेकिन यह केवल पोस्ट पर है, मेरी लिपि में नहीं।
जोड़ा लेखक Steve Peterson, स्रोत
bagonyi ... यकीन नहीं है कि मुझे पता है कि इसे कैसे ठीक करें। यह समुदाय सबमिट अभिव्यक्ति की सूची से एक अभिव्यक्ति है जिसे मैंने थोड़ा सा संशोधित किया। अगर मैं '^' लेता हूं, तो यह ठीक नहीं होता है। मुझे बस "प्राप्त" और "स्रोत" के बीच सब कुछ कैप्चर करने की आवश्यकता है क्योंकि ये शर्तें सुसंगत और अद्वितीय हैं।
जोड़ा लेखक Steve Peterson, स्रोत
rubular.com भी एक अच्छी साइट है (जो आप उपयोग कर रहे हैं उससे कहीं अधिक आसान)।
जोड़ा लेखक Ricardo, स्रोत
आप यहां क्या अस्वीकार करना चाहते हैं: [^] ? मेरा मानना ​​है कि PHP में रेगेक्स इंजन सोचता है कि आप खुद को अस्वीकार कर रहे हैं, इस प्रकार इसे कोई बंद ब्रैकेट नहीं मिल रहा है।
जोड़ा लेखक bagonyi, स्रोत
क्या आप अपनी पोस्ट के सिंटैक्स हाइलाइटिंग में कुछ भी गलत देखते हैं?
जोड़ा लेखक jordanm, स्रोत

2 उत्तर

^ has a special meaning inside a character group, it cannot stand alone as [^]. In this context it means not those chars, as in [^abc] means anything but a, b and c, but you aren't specifying any.

और इसके एकमात्र प्रतीक के बाद, आपको इसे एक चरित्र समूह में रखने की भी आवश्यकता नहीं है।

0
जोड़ा

यह [^] की वजह से है।

कुछ जावास्क्रिप्ट कार्यान्वयन के साथ [^] का अर्थ है साहित्यिक "सभी संभावित पात्र" (कुछ भी अस्वीकार नहीं)। लेकिन PHP में, क्लोजिंग स्क्वायर ब्रैकेट को शाब्दिक के रूप में देखा जाता है यदि यह उद्घाटन ब्रैकेट या अस्वीकरण प्रतीक ^ के तुरंत बाद खड़ा होता है। इस प्रकार <कोड> [^]) *? (? = स्रोत) को एक अनजान चरित्र वर्ग के रूप में देखा जाता है।

इस नोटेशन का लक्ष्य सभी संभावित पात्रों से मेल खाना था ( [\ s \ S] के लिए शॉर्टकट का एक प्रकार), आप इसे प्रतिस्थापित कर सकते हैं:

$datePattern = '/(?<=received at ).*?(?=Source)/s';

You can read more informations about these kind of notations in this incredible post.

0
जोड़ा
यह पूरी तरह से काम किया। आपका बहुत बहुत धन्यवाद।
जोड़ा लेखक Steve Peterson, स्रोत