ts.tsogoo
Goto Top

String ausschließen bei Regex

Wie schließt man ein Zeichenkette bei einem Regex?

Input String:
 <div>htmlCodes<div class=\"entry\"> bla bla <htmlCodes>/fda </htmlCodes> / bla bla </div>htmlCodes</div>  
Gewünschte Substring:
 <div class=\"entry\"> bla bla <htmlCodes>/fda </htmlCodes> / bla bla </div>  

Wie ich versucht habe:
		String regex = "<div class=\"entry\">(.*)</div>";  
		String source ="<div>htmlCodes<div class=\"entry\"> bla bla <htmlCodes> bla bla </div>htmlCodes</div>";  
		Matcher m = Pattern.compile(regex).matcher(source);
		while (m.find()) {
			System.out.println("Matched group: "+m.group(1));  
		}
Eigentlich kann man durch [^0-9]* beliebige Zeichenkette ohne Zahl finden. Wie das hier (Zeichen ausschließen) will ich String ausschließen. zB. "BeispielString" trifft zu, "Beispiel2String" trifft nicht zu, "beispielabc" trifft nicht zu bei [^0-9(abc)].

Ich muss dieses Problemm nur mit regex lösen.

Hilf mir bitte

Danke voraus

Content-ID: 175579

Url: https://administrator.de/contentid/175579

Ausgedruckt am: 24.11.2024 um 01:11 Uhr

suchong
suchong 03.11.2011 um 08:41:49 Uhr
Goto Top
Um die Zeichen von a-z sowie A-Z auszuschliessen, kannst Du [^a-zA-Z] verwenden.
ts.tsogoo
ts.tsogoo 05.11.2011 um 13:49:28 Uhr
Goto Top
ich will kein Zeichen ausschließen sondern bestimmetes subString.
suchong
suchong 08.11.2011 um 10:58:54 Uhr
Goto Top
Also in regex gibt es eine Stringklasse, welche dies erlaubt:

String s1 = "BeispielString";  
String s2 = "Beispiel2String";  
		System.out.printf("%b", s1.matches("BeispielString"));  
                System.out.printf("%b", s2.matches("BeispielString"));  
Der erste Ausdrück liefert true und der zweite false zurück.

Eine andere Variante ist folgende: Übergibt man der Pattern ein String wie "(BeispielString)", dann liefert m.find() den Index des ersten Buchstaben zurück, wenn der Substring im String gefunden wird, ansonsten nichts. Ein Beispielprogramm der dies tut:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Regex2 {
        public static void main(String args) {
                Pattern p = Pattern.compile(args);
                Matcher m = p.matcher(args[1]);
                while (m.find()) {
                        System.out.print(m.start() + " ");  
                }
        }
}

Liefert beim Aufruf mit java Regex2 "BeispielString" "Ist BeispielString enthalten?" eine 4 zurück, ansonsten nichts. Vorsicht: Mit obigem compile wird auch ein "BeispielStringBeispiel" gefunden. Evtl. hilft hier ein zusätzliches [\s].

Das obige Programm als Methode umzubauen, welche je nachdem true oder false liefert dürfte nicht schwer sein.
ts.tsogoo
ts.tsogoo 21.11.2011 um 06:18:17 Uhr
Goto Top
Das hilft leider nicht. Aber trotz danke für deine Mühe

		String regex = "<div class=\"entry\">(.*)</div>";  
		String source ="<div>htmlCodes<div class=\"entry\"> bla bla <htmlCodes> bla bla </div>htmlCodes</div>";  
		Matcher m = Pattern.compile(regex).matcher(source);
		while (m.find()) {
			System.out.println("Matched group: "+m.group(1));  
		}
Was ich will ist, von dieser statement
		Matched group: <div class=\"entry\"> bla bla <htmlCodes>/fda </htmlCodes> / bla bla </div>  
das hier zu matchen.
suchong
suchong 21.11.2011 um 22:07:39 Uhr
Goto Top
Bitte und viel Glück auf der Suche nach einer Lösung. Falls Du eine findest, bitte ich Dich, diese hier zu posten. Danke.
ts.tsogoo
ts.tsogoo 22.11.2011 um 12:46:50 Uhr
Goto Top
ja, das werde ich gern und sicher tun.