Gå til innhold

[Løst]Begrense streng ved hjelp av regexp


Anbefalte innlegg

Usikker på om dette er rette kategori å spørre om dette i, men det er ingen egen kategori for regexp og det er trossalt i et java prosjekt jeg skal bruke det.

 

Jeg holder på å skrive et program som skal sortere elementer basert på filtre definert ved regexp, så jeg trenger en måte å klippe/begrense tekst strenger ved hjelp av regexp.

 

En problemstilling:

Jeg har et regexp som begrenser elementer til en kategori, altså et regexp som er til felles for en mengde elementer. Ut av den mengden elementer ønsker jeg å trekke ut en særegenhet i elementnavnet.

Hvis element navnet har denne strukturen: <egen_navn><kategori><...>, kan jeg da beskrive egennavnet i regexp ved "alt før <kategori>", i selve regexp?

 

Grunnen til at jeg ønsker regexp til å trekke ut egen navnet er fordi programmet skal være generisk og skal kunne ta inn filtre fra bruker.

 

Håper noen kan hjelpe meg på vei :)

Endret av Mapster
Lenke til kommentar
Videoannonse
Annonse
  • 3 uker senere...

Dette er egentlig lettere enn du tror. Hvis du har lest deg opp litt på regex vet du at man kan definere backreferences via paranteser.

 

I ditt tilfelle vil følgende regex holde:

 

"(.*egennavn.*)kategori"

 

I Matcher.groups(index) vil den første indeksen være hele matchet, mens de påfølgende vil være hver parantes:

 

0 => <egennavn><kategori

1 => <egennavn><

 

Du burde herifra fint klare å kvitte deg med <> om disse eksisterer i strengen din. Om dette er xml eller liknende, vær obs på newlines som kan krølle ting til. Da finnes det vel sikkert pakker som kan ta xml-parsing for deg ;)

 

//T

Lenke til kommentar
  • 3 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...