Spezieller Regex gesucht

Sorry, aber ich habe das gerade mal getestet. Leider findet der bei mir nichts.
Biste sicher, dass das alles ok ist?

Danke für die Hilfe schon jetzt.
 
SO ich hab's fast aber leider auch nur fast
Code:
String g = "<a>test</a>\n" +
		"test</a>\n"+
		"<a>test\n"+
		"test\n";
		Matcher m= Pattern.compile("<{0,1}\\w*?>{0,1}(\\w*)<{0,1}").matcher(g);
		while(m.find()){
			System.out.println(m.group(1));
		}
liefert ansich alles korrekt zurueck. Das einzige Problem ist das die ganzen "a" mit ausgegeben werden und ich weiss nicht wieso, da ich nur eine Captouring Group habe :| aber vielleicht weisst du ja von hier aus weiter...
Wenn sich noch was aendert melde ich mich wieder ;)
mgf
 
jorgeHX hat gesagt.:
Sorry, aber ich habe das gerade mal getestet. Leider findet der bei mir nichts.
Biste sicher, dass das alles ok ist?

Danke für die Hilfe schon jetzt.
Also wenn ich genau das was ich oben geschrieben habe bei mir laufen lasse (Copy&Paste) dann gibt er mir alle Zeichen aus die er findet.


@elmato
Vielen Dank. Ich denke den Rest krieg ich noch irgendwie hin.
Thx Thx Thx :)
 
Sorry, hatte was falsch eingefügt. Läuft super.
Danke

Mit * lautet dann:

String regex = ("\\?|\\||:|\\*|\\\\|/|<|>|\"");
 
Zuletzt bearbeitet:
Ich wollte nur mal die Lösung für mein Problem mit den geschachtelten Tags posten (für Interesierte).

Code:
public class Main {

    /**
     * @param args
     */
    public static void main( String[] args ) {
       /* Testfälle */
//        String test = "<td> blablabla       <tag dsd> blubblub</td>";
//        String test = "<td> bla > dasd      </td>";
//        String test = "<td> bla <tag>       </td>";
        String test = "<td><tag>blablabla</td>";
//        String test = "<td> <tag1   <tag2>  tag1>bla   </td>";
//        String test = "<td colspan=\"2\" align=\"center\" class=\"blauDunkelBlau\">AAAAA<low:dropdownComponent name=\"<%=LowWebappInfermWebSymbols.OPTION_BEAN_ZEITRAUM%>\" optionBean=\"<%=LowWebappInfermWebSymbols.OP_ZEITRAUM_DROP_DOWN_OPTIONS_LIST%>\" optionBeanProperty=\"DropDown\" selectionBean=\"<%=LowWebappInfermWebSymbols.OP_ZEITRAUM_DROP_DOWN_OPTIONS_LIST%>\" selectionBeanProperty=\"Selection\" action=\"true\" width=\"160\" maxDisplayedChars=\"33\" /></td>";

        Matcher m = Pattern.compile("<td.*?>(.*?[<br>]?.*?)</td>").matcher(test);
        ReplacementList list = new ReplacementList();

        StringBuffer sb = new StringBuffer(test);
        System.out.println(sb);
        
        while(m.find()){
            search2(list, m, 0, m.group(1));
        }

        
        Iterator it = list.getMap();
        while(it.hasNext()){
            Entry entry = (Entry)it.next();
            ReplaceObject r = (ReplaceObject)entry.getValue();
            
            int position = r.getStartPosition();
            int end = r.getEndPosition();
            sb.replace(position, end, "Hallo");
        }
        
        System.out.println(sb.toString());
    }
    
   
    public static void search2 (ReplacementList list, Matcher m, int appendIndex, String s){
        if(s.matches("<a href.*?") == false){
            int opened = 0;
            int closed = 0;
            int closedTagPosition = 0;
            
            int firstOpenTag = s.indexOf("<");
            int firstCloseTag = s.indexOf(">");
            
            char[] a = null;
            int arrayStartPosition = 0;
            
            if( (firstOpenTag != -1 && firstCloseTag == -1) || (firstOpenTag == -1 && firstCloseTag != -1) || (firstOpenTag == -1 && firstCloseTag == -1) ){
                if(s.length() > 0)
                    list.add(m.start(1) + appendIndex, m.start(1) + appendIndex + s.length(), s);
            }
            else if(firstOpenTag > 0){
                String text = s.substring(0, firstOpenTag);
                if(text.length() > 0)
                    list.add(m.start(1) + appendIndex, m.start(1) + appendIndex + firstOpenTag, text);
                a = s.substring(firstOpenTag, s.length()).toCharArray();
                arrayStartPosition = firstOpenTag;
            }
            else{
                a = s.toCharArray();
            }

            String nextString = null;
            if( a != null){
                for(int i=0; i<a.length; i++){
                    if(a[i] == '<')
                        opened++;
                    else if(a[i] == '>')
                        closed++;
                    
                    if(opened == closed){
                        closedTagPosition = i;
                        nextString = s.substring(arrayStartPosition + closedTagPosition + 1, s.length());
                        break;
                    }
                }
            }
            
            if(nextString != null && nextString.length() > 0)
                search2(list, m, arrayStartPosition + closedTagPosition+1, nextString);
        }
    }

ReplaceObject:
Code:
import java.util.Comparator;


public class ReplaceObject {

    private int startPosition;
    private int endPosition;
    private String germanText;
    
    
    protected ReplaceObject( int startPosition, int endPosition, String germanText ){
        this.startPosition = startPosition;
        this.endPosition = endPosition;
        this.germanText = germanText;
    }
    
   
    public int getStartPosition(){
        return startPosition;
    }
    
    public int getEndPosition(){
        return endPosition;
    }
    
    public String getGermanText(){
        return germanText;
    }
}// end Class

ReplacementList
Code:
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;


public class ReplacementList implements Comparator{

    private TreeMap replaceObjects;
    
    protected ReplacementList (){
        replaceObjects = new TreeMap(this);
    }
    
    
    public void add( int startPosition, int endPosition, String germanText ){
        ReplaceObject o = new ReplaceObject( startPosition, endPosition, germanText );
        replaceObjects.put(new Integer(startPosition), o);
        
    }
    
        
    public int compare( Object o1, Object o2 ) {
        int start1 = ((Integer)o1).intValue();
        int start2 = ((Integer)o2).intValue();
        
        if(start1 < start2)
            return 1;
        else if(start1 > start2)
            return -1;
        return 0;
    }
    
    
    public Iterator getIterator(){
        return replaceObjects.entrySet().iterator();
    }
    
}// end Class
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück