Wyrażenia regularne - omijanie fragmentu string

0

Cześć. Chciałbym skonstruować wyrażenie regularne do string-u, które będzie omijać pewne bloki(wyrażenia regularne)

np.
Chcemy wyłapać wszystkie cyfry, ale pomijając bloki {coś} dla przykładu:

"24 56 788 14 55 {1987}" wyłapie to co nieskreślone. Z góry dziekuje za sugestie.

1

zrób wyrazenie na zasadzie takiej
{[0-9]+}
z flaga /g
wtedy wylapiesz wszystkie w nawiasach. Zrob na tym Replace i zmien na pusty string. Zostanie Ci string z samymi liczbami.

0
fasadin napisał(a):

zrób wyrazenie na zasadzie takiej
{[0-9]+}
z flaga /g
wtedy wylapiesz wszystkie w nawiasach. Zrob na tym Replace i zmien na pusty string. Zostanie Ci string z samymi liczbami.

Cześć. Dzięki za odpowiedź. Chciałem tylko dopytać co to znaczy flaga /g.

Akurat mi zależy na tym żeby nie zmieniać indeksów znaków w ciągu pierwotnym (nie wycinać nic), ale pokombinuje.

1

W takim razie:

  1. Operuj na kopii, kopie modyfikuj
  2. Złap wszystko INNE (czyli wszystko, co nie znajduje się w { oraz }) i zrób flatmap
2

To ma być wszystko co w {} czy poza, bo ja zrozumiałem że ma być poza nawiasami.
[\d\s](?!([^{]+)?})
wynik: 24 56 788 14 55

A jak chcesz bez białych znaków to: [\d](?!([^{]+)?})
wynik: 24567881455

0

Dzięki już ogarnąłem. Chciałem tylko jeszcze zapytać jak jest z polskimi znakami w wyrażeniach regularnych. Musze wypisać cały alfabet pomiędzy []?

0

Nie, wystarczy \D i dla 123ą123śł123ó123źżłćś123 dostaniesz ąśłóźżłćś.

0
DibbyDum napisał(a):

Nie, wystarczy \D i dla 123ą123śł123ó123źżłćś123 dostaniesz ąśłóźżłćś.

Właśnie zależy mi na tym żeby wyłapywało tylko wyrazy. Wyczarowałem coś takiego i zdaje się że jest ok:

//Wyrażenie
[a-zA-ZąćęłńóśźżĄĘŁŃÓŚŹŻ]+

1 użytkowników online, w tym zalogowanych: 0, gości: 1