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-Key: 175579

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

Printed on: April 19, 2024 at 08:04 o'clock

Member: suchong
suchong Nov 03, 2011 at 07:41:49 (UTC)
Goto Top
Um die Zeichen von a-z sowie A-Z auszuschliessen, kannst Du [^a-zA-Z] verwenden.
Member: ts.tsogoo
ts.tsogoo Nov 05, 2011 at 12:49:28 (UTC)
Goto Top
ich will kein Zeichen ausschließen sondern bestimmetes subString.
Member: suchong
suchong Nov 08, 2011 at 09:58:54 (UTC)
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.
Member: ts.tsogoo
ts.tsogoo Nov 21, 2011 at 05:18:17 (UTC)
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.
Member: suchong
suchong Nov 21, 2011 at 21:07:39 (UTC)
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.
Member: ts.tsogoo
ts.tsogoo Nov 22, 2011 at 11:46:50 (UTC)
Goto Top
ja, das werde ich gern und sicher tun.