Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [RegularExpression] Pominięcie nawiasów w wyrażeniu
Forum PHP.pl > Forum > Przedszkole
Tomplus
Mam kod RegExp:
Kod
((.*){1,})(\(([0-9]{4})\))


Kod działa wtedy gdy trzeba:
np.:
Unia Polsko-litewska (1385)
Jednak gdy zabraknie nawiasów, to RE nie działa.

Potrzebuję rozdzielić ten kod na TEXT i LICZBĘ, lub tylko TEXT gdy nawiasów nie ma, albo w nawiasie jest coś innego niż rok.
Tomplus
Dobrze.
Jednak mi pomogłeś perfekcyjnie:

Zrobiłem korektę, dodając spację oraz co najważniejsze dodałem flagę U i teraz kod jest taki:

Kod
((.*){1,})(\s\(?([0-9]{4})\)?)


Dzięki temu, w grupie 1 nie ma dzikiego nawiasu (
oraz nie ma spacji między nazwą a nawiasem.

Zwrot wartości jest:
Full match 0-26 `Unia Polsko-litewska (1385)`
Group 1. 0-20 `Unia Polsko-litewska`
Group 2. 19-20 `a`
Group 3. 20-26 ` (1385`
Group 4. 22-26 `1385`

grupa 1 i grupa 4 daje mi wynik który oczekiwałem.
trueblue
A co w przypadku:
Unia Polsko-litewska abc lub Unia Polsko-litewska 1985
?
Tomplus
Logicznie, pobiera całość.
Mnie zależy tylko aby wartość w nawiasie trafiła do osobnej grupy. Dane z których pobieram, mają swoją logikę. Linia ma nawias z rokiem, a inna linia nawiasu nie ma.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.