जो दिखाया स्ट्रिंग regex की तरह कुछ भी नहीं लग रहा है यह देखते हुए त्रुटि संदेश, से, मुझे लगता है कि यह निष्कर्ष निकाल मूल पैटर्न अनिवार्य रूप से निम्नानुसार था, जिसे मैंने सुधार करने की स्वतंत्रता ली है, प्रतीकात्मक स्थिरांक जोड़ना है, और इसके साथ प्रस्तावना रेखा संख्याएं जिन्हें हम अधिक आसानी से निरीक्षण और संबोधित कर सकते हैं।
(सभी गैर तुच्छ पैटर्न हमेशा(?x)
मोड में लिखा जाना चाहिए -। भले ही जावा यहाँ आप के खिलाफ लड़ता है, तो आप अभी भी यह करना चाहिए)
1 (?: \P{L} | \W | ^)
2 (
3 (?: \N{KATAKANA LETTER BE} \N{KATAKANA LETTER SU}
4 | \N{KATAKANA LETTER BE} \N{KATAKANA LETTER SU}
5 | \N{KATAKANA LETTER HE} \N{KATAKANA LETTER ZU}
6 )
7 (?: \N{KATAKANA LETTER PA})
8 |
9 \N{KATAKANA LETTER PA}
10 )
11 |
12 \N{KATAKANA LETTER HA}
13 )
14 \N{COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK}
15 )
16 (?: \b | $)
पहली और आखिरी लाइनों गलत कर रहे हैं, लेकिन वे अर्थात् जावा के टूटे हुए रेगेक्स से संबंधित तरीके से गलत हैं। वे वाक्य रचनात्मक रूप से गलत नहीं हैं। वे कोई खुला कोष्ठक इसी है
के रूप में अब स्पष्ट होना चाहिए, वाक्यात्मक मुद्दा यह है कि लाइनों 13 और 15 पर खुले कोष्ठक नकली हो रहा है।
के होते हुए भी, मैं अभी भी समझने के लिए यह क्या आप वास्तव में यहाँ करने के लिए कोशिश कर रहे हैं कोशिश कर रहा हूँ पहली और आखिरी लाइनों। लाइन 3 और 4 की नकल क्यों? यह कुछ भी उपयोगी नहीं करता है। और मैं लाइन 7.
पर समूह के लिए कोई कारण नहीं आशय के संयोजन निशान पूर्ववर्ती बातों में से किसी को लागू करने के लिए अनुमति देने के लिए है देख सकते हैं?
पहली और आखिरी लाइनों में त्रुटियों के लिए के रूप में, मुझे समझ नहीं है कि एक साधारण शब्द सीमा सब है कि आप के लिए देख रहे हैं? क्या आप वास्तव में उन सीमाओं को अपने मैच के हिस्से के रूप में शामिल करना चाहते हैं, या आप बस सीमाएं स्थापित करने की कोशिश कर रहे हैं? आप एक गैर-पत्र या गैर-शब्द क्यों कह रहे हैं?
वर्ड पात्रों पत्र शामिल करते हैं, आप जानते हैं - कम से कम, यूनिकोड के अनुसार वे करते हैं, भले ही जावा करता है यह गलत विशेषताएं। हां, आपने जावा रेगेक्स बग की वजह से अक्षरों का एक गुच्छा शामिल किया है, इसलिए मुझे यह समझने के बाद हमें यह याद रखना होगा कि आप वास्तव में क्या चाहते हैं।
यदि आपने केवल कुछ ऐसा किया जो वास्तव में यूटीएस # 18 के अनुरूप था, तो यह ठीक काम करेगा, लेकिन जैसा कि मुझे लगता है कि आपने नहीं किया है (मैंने आईसीयू का कोई उल्लेख नहीं सुना है), हमें इसे लाइनों के साथ ठीक करना होगा मेरे पास previously outlined है।
या तो एक गैर शब्द या स्ट्रिंग की शुरुआत के लिए एक नजर डालें, पहले के लिए काम करेगा, और एक गैर शब्द या स्ट्रिंग के अंत के लिए एक लुकहेड आखिरी के लिए काम करेगा। यही कारण है कि \b
पाठ्यक्रम चाहिए जब शब्द पात्रों का सामना करना पड़ तुम यहाँ है के रूप में करने के लिए की है, और यह भी प्रदान की जाती है कि आप अपने गैर शब्द कण के स्पष्ट रहना कि जिस तरह से बाहर काम कर सकते हैं।
लेकिन जब तक मैं मूल उद्देश्य के अधिक देख सकते हैं, मुझे नहीं लगता कि मैं और अधिक कहना चाहिए है।
आपके त्रुटि संदेश में पैटर्न * में * दो अतिरिक्त होते हैं) - क्या त्रुटि संदेश या आपकी पोस्ट गलत है? – Erik
आपको ** ** \ W', '\ w',' \ s', '\ d',' \ b', '\ p {alpha} 'का उपयोग नहीं करना चाहिए, न ही किसी अन्य चरित्र-वर्ग का उपयोग करना चाहिए जावा regexs में शॉर्टकट, क्योंकि जावा regex लाइब्रेरी [यूनिकोड नियमित अभिव्यक्ति की औपचारिक आवश्यकताओं] के साथ अनुपालन नहीं है (http://unicode.org/reports/tr18/#Compatibility_Properties)। आप '[\ pL \ pM \ p {Nd} \ p {Nl} \ p {पीसी}]' और '\ W' के साथ' \ w' अनुकरण कर सकते हैं '[^ \ pL \ pM \ p {Nd} \ पी {एनएल} \ पी {पीसी}] 'अगर आपको संलग्न_अल्फ़ान्यूमेरिक्स की परवाह नहीं है।या आप एक रेगेक्स लाइब्रेरी या भाषा का उपयोग कर सकते हैं जो यूनिकोड मानक का अनुपालन करता है। इसका मतलब है आईसीयू रेगेक्स लाइब्रेरी को कॉल करना, या पर्ल के इत्यादि को कॉल करना आदि। – tchrist
क्या आपने 'जावा-एन्कोडिंग यूटीएफ -8'' के साथ संकलित किया था? – tchrist