2010-07-22 17 views
5
<?php 
    $str = "word <a href=\"word\">word</word>word word"; 
    $str = preg_replace("/word(?!([^<]+)?>)/i","repl",$str); 
    echo $str; 
    # repl <word word="word">repl</word> 
?> 

स्रोत: http://pureform.wordpress.com/2008/01/04/matching-a-word-characters-outside-of-html-tags/इस preg_replace के बराबर जावा क्या है?

Unfortunality अपने प्रोजेक्ट की जरूरत है एक अर्थ libs केवल जावा के लिए उपलब्ध ...

// धन्यवाद सेल्सो

+1

आपको गंभीरता से इस प्रश्न को फिर से भरना होगा। 1) जावा के साथ इसका क्या संबंध है? 2) आपका अपेक्षित इनपुट और आउटपुट क्या है? – whaley

+0

परिणाम अपेक्षित: प्रतिलिपि प्रतिकृति प्रतिकृति प्रति – celsowm

उत्तर

8

उपयोग String.replaceAll() विधि:

class Test { 
    public static void main(String[] args) { 
    String str = "word <a href=\"word\">word</word>word word"; 
    str = str.replaceAll("word(?!([^<]+)?>)", "repl"); 
    System.out.println(str); 
    } 
} 

आशा इस मदद करता है।

+1

धन्यवाद !!! और असंवेदनशील मामले के साथ सही संस्करण: "(? i) शब्द (?! ([^ <]+)?>)"; – celsowm

1

एक और जवाब प्रदान करने से पहले, आप एक पार्स करने के लिए कोशिश कर रहे हैं एचटीएमएल दस्तावेज़? यदि ऐसा है, तो regexes का उपयोग न करें, एक HTML पार्सर का उपयोग करें।

+0

मेरा टूल टैग के अंदर मूल्य के रूप में शर्तों का उपयोग करके नए टैग में एक txt में शब्दों को प्रतिस्थापित करने के लिए एक्सएचटीएमएल "जेनरेट" करता है, मैं प्रतिस्थापन का उपयोग कर रहा हूं दृष्टिकोण क्योंकि कुछ शर्तों को "सेल्सो अरजु फ़ॉन्ट्स" जैसे मिश्रित किया जा सकता है। उदाहरण, इस स्थिति में सभी myTerm को कैसे बदलें myTerm शांत दोस्त – celsowm

2

जावा में इस्तेमाल के लिए है कि regex अनुवाद करने के लिए, तुम सब करने की ज़रूरत / सीमांकक से छुटकारा पाने और एक इनलाइन संशोधक के अनुगामी i बदलने के लिए, (?i) है। लेकिन यह एक बहुत अच्छा regex नहीं है; मैं बजाय इसका उपयोग क्यों:

(?i)word(?![^<>]++>) 

RegexBuddy के डिबग सुविधा के अनुसार, जब यह मैच के लिए <a href="word"> में word, मूल regex इसे अस्वीकार करने का 23 चरणों की आवश्यकता है की कोशिश करता है, यह एक केवल सात कदम उठा लेता है। वास्तविक जावा कोड

str = str.replaceAll("(?i)word(?![^<>]++>)", "repl"); 
+0

स्पष्टीकरण के लिए धन्यवाद एलन! – celsowm

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