Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
jhr-online
- Beiträge: 2186
- Registriert: 18.09.2005 15:52:02
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Beitrag
von jhr-online » 24.01.2007 00:12:17
Ich habe nur ein kleines Problem:
$DOMAIN soll darauf getestet werden, wirklich eine domain zu beinhalten; am liebsten per regex, also in der Art
wobei das irgendwas alles in der Form
http://www.domain.tld und einfach domain.tld zulassen soll. Ich kann dieses Zeugs einfach nicht...
Btw: gibt es ein Gegenstück zu "=~"? Ich brauche nämlich eigentlich den Fall, dass es nicht stimmt...
jhr
Zuletzt geändert von
jhr-online am 24.01.2007 11:58:27, insgesamt 1-mal geändert.
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13
-
Six
- Beiträge: 8069
- Registriert: 21.12.2001 13:39:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Siegburg
Beitrag
von Six » 24.01.2007 02:07:35
Hmh, auf die Schnelle.
! negiert den Test
Reguläre Ausdrücke sind ohne Hilfe von Programmen etwas beschränkt. Im wesentlichen sind es die, die auch für Dateisystemoperationen gelten, sowie diejenigen, die egrep versteht. Um kompliziertere Fälle abzufragen würde ich auf awk ausweichen, aber vielleicht geht es auch anders. Ich bin nicht so der Bash-Held
Be seeing you!
-
123456
- Beiträge: 6126
- Registriert: 08.03.2003 14:07:24
Beitrag
von 123456 » 24.01.2007 10:03:39
regex vielleicht in der Art...
(http:\/\/)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z.]{2,6}
-
jhr-online
- Beiträge: 2186
- Registriert: 18.09.2005 15:52:02
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Beitrag
von jhr-online » 24.01.2007 10:40:17
ub13, das reicht für meine Zwecke allemal, danke!
six, != negiert ==, aber was negiert =~?
jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13
-
123456
- Beiträge: 6126
- Registriert: 08.03.2003 14:07:24
Beitrag
von 123456 » 24.01.2007 10:42:30
jhr-online hat geschrieben:das reicht für meine Zwecke allemal
Du musst noch ausprobieren, ob Du die Klammern und geweiften Klammern noch escapen musst. Da bin ich mir nicht sicher...
-
nepos
- Beiträge: 5238
- Registriert: 05.01.2005 10:08:12
Beitrag
von nepos » 24.01.2007 11:13:56
jhr-online hat geschrieben:ub13, das reicht für meine Zwecke allemal, danke!
six, != negiert ==, aber was negiert =~?
jhr
!~
-
123456
- Beiträge: 6126
- Registriert: 08.03.2003 14:07:24
Beitrag
von 123456 » 24.01.2007 11:35:35
bsp:
Code: Alles auswählen
#!/bin/bash
string='world.com'
regex='^(http:\/\/)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z.]{2,6}$'
if [[ $string =~ $regex ]]; then
echo "Hallo"
fi
exit
Also - escapen braucht man nicht, dafür aber muss man Anfang und Ende begrenzen (^,$). Beim Negieren einfach "if ! ...." schreiben...
-
jhr-online
- Beiträge: 2186
- Registriert: 18.09.2005 15:52:02
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Beitrag
von jhr-online » 24.01.2007 11:58:05
Danke dir, mein script ist komplett... (auch dank silke und mistersixt im Chat).
jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13