» »

Regular expression

Regular expression

Klemenn ::

takega...da bo moj textbox obvezno vseboval

(1...več črk) (presledek) (1...več črk)

a bo nekaj z + \s?

_Dormage_ ::

Več poljubnih znakov? Samo črk? mahjne ali velike?

blackbfm ::

.+\s.+

kunigunda ::

[a-zA-Z]+\s[a-zA-Z]+
oz
[a-zA-Z]+\s+[a-zA-Z]+ (en ali vec presledkov

ce si pod "crk" mislil le znakov (non space) potem pa
\S+\s\S+
oz
\S+\s+\S+

Spura ::

Drugace se za crke v Javi uporablja
\p{L} za crko ne pa [a-zA-Z], ker prvi dovoljuje vse unicode crke, drugi pa samo anglesko abecedo.

kunigunda ::

Sicer jest sm anti-sumnik in jih ne uporabljam, je pa fajn informacija, nism vedu da so clo to dostukal v regex :)

Spura ::

Jst tut ne uporabljam sumnikov, ampak jih uporabniki mojih aplikacij. Ali pa recimo, da imas podatke o neki nemski firmi in ti bi rad besede, notr je pa umlaut. Itd... moras delat s tem.

S temi unicodi je veliko "trikov".
Recimo malo znano dejstvo je, da je $ pravilno ime java spremenljivke. Se manj znano dejstvo je pa, da je katerikoli currency symbol pravilno ime. Zank za evro je pravilno ime.

kunigunda ::

K sreci ze dolgo ne delam vec GUIjev za koncne uporabnike, serverji ki jih delam so pa le za anglesko sintakso, tko da mi ni treba se na kljukce paziti :)
Za $ pa vem ja, sam mi ful grdo zgleda ce bi uporablju. Bog ne daj da bi se kaj drugega.

Klemenn ::

kaj pa

multiline textbox z max dolžine 100

zaenkrat sem imel
ValidationExpression="^.{{0,100}$"

vendar to nekak ne zastopi, da breakline\newline ne pomeni znakov za celotno dolžino vrstice

any suggestions?

Spura ::

Vklopi multiline mode. Sej bi ti povedu kako se to naredi samo delas v C# ki je kurac od ovce glede dokumentacije. V 15 minutah mi ni ratal najdet opisa regularnih izrazov na MSDN.

Zgodovina sprememb…

  • spremenil: Spura ()

darkolord ::

Nesposoben? IMO je dokumentacija na MSDN daleč najboljša.

RegexOptions

Zgodovina sprememb…

  • spremenilo: darkolord ()

MrBrdo ::

Spura je izjavil:

v C# ki je kurac od ovce glede dokumentacije

Lol to pa definitivno ni res.
Klemenn: Btw ne vem sicer kako je v C#, ampak lahko imaš problem z ^ in $, ker načeloma pomenita začetek/konec vrstice, če si mislil začetek/konec stringa uporabi namesto tega \A in \Z ali \z... Ker v nekaterih implementacijah $ matcha konec vrstice v nekaterih pa konec stringa. Ne vem pa ali ma pri C# to kej veze v tvojem primeru. V Ruby bi bil narobe tak expression, bi moral \A in \z uporabit.
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

fx ::

V C# imam niz ki je sestavljen z zanki 0-9A-Fa-f.
Primer:
043133343830313133310A004D656469636F7020642E6F2E6F2E0A01313032313031320A023133343830313133310A033E820A063937383839373839370A093E880A073938370A0839383738393738390A053532484d4730312d54564c323336330A0A373839373839370A


Če uporabim navedeni niz v kodi
foreach (string result in Regex.Split(input, "[0-9A-Fa-f]0A")){
textBox2.AppendText(string.Format("'{0}'{1}", result,System.Environment.NewLine));
}

Dobim ven:
'0431333438303131333'
'004D656469636F7020642E6F2E6F2'
'013130323130313'
'0231333438303131333'
'033E8'
'0639373838393738393'
'093E8'
'0739383'
'08393837383937383'
'053532484d4730312d54564c3233363'
'0A3738393738393'
''

Kar je v redu in super.

Problem se mi pojavi, na primer če dobim tako obliko niza: 033E0A0A0A373839373839370A. V tem primeru pa trenutno moje pravilo da se vsaki niz zapisan konča na 0A. Prednost šifre 03 je v tem da je dolžina niza vedno ista (datum) (03)3E0A(0A) torej, me zanima kako lahko naredim da regex upošteva do izjemo?

Hvala.
Lep pozdrav,

fx

GupeM ::

Ne štekam kaj točno bi rad. Prosim napiši kakšen izpis bi rad za drugi primer.

fx ::

Sedaj sem tudi ugotovil da mi "[0-9A-Fa-f]0A" ne dela v redu, namreč dobim tole:
'0431333438303131333'
'004D656469636F7020642E6F2E6F2'
'013130323130313'
'0231333438303131333'
'033E8'
'0639373838393738393'
'093E8'
'0739383'
'08393837383937383'
'053532484d4730312d54564c3233363'
'0A3738393738393'

Moral pa bi
'04313334383031313331'
'004D656469636F7020642E6F2E6F2E'
'0131303231303132'
'02313334383031313331'
'033E82'
'06393738383937383937'
'093E88'
'07393837'
'083938373839373839'
'053532484d4730312d54564c32333633'
'0A37383937383937'
Odreže zadnji znak - ne vem zakaj temu tako (sem šele včeraj se začel učit uporabo regular expression).

Pri drugem primeru pa bi rad tole dobil ven :
033E0A0A0A373839373839370A ->
033E0A0A
0A37383937383937

Ključ po katerem delam je sledeči:
(šifra) - dolžina dveh znakov (00-FF)
(vsebina) - poljubna dolžina
(konec) - v mojem primeru je to 0A niz - ampak slednji niz je lahko tudi šifra, saj to ko pretvorim v decimalno je to številka 10.

Hvala,

fx ::

Vse skupaj sem rešil :) za sebe menim da bi lahko še boljše rešilo se. Ampak kar sem imel pred tem za funkcije je ta boljša.
int i = 0;
List<string> list = new List<string>(Regex.Split(input, "(?<=0A)"));
foreach(string result in list){
	if((list[i].Substring(0,2)=="03" && list[i].Length<=6)||(list[i]=="0A")){
		list[i]+= list[(i+1)];
		list.RemoveAt((i+1));
	} 					
	textBox2.AppendText(string.Format("({2})'{0}'{1}", list[i], System.Environment.NewLine, i));
	i++;
}


Če ima kdo bolši predlog ga bom vesel.

Hvala.

TESKAn ::

Predlog - če še nimaš, si dobi kako orodje za izdelavo regularnih izrazov. Sam uporabljam expresso (link) in je v precejšnjo pomoč:).
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] While zanka

Oddelek: Programiranje
262184 (1767) kunigunda
»

JavaScript

Oddelek: Programiranje
6887 (815) snooze77
»

delo z nizi

Oddelek: Programiranje
162875 (2419) tx-z
»

BOOT cd

Oddelek: Pomoč in nasveti
91595 (1423) StratOS

Več podobnih tem