Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [RegularExpression] Pominięcie nawiasów w wyrażeniu
Tomplus
post 24.11.2016, 18:29:30
Post #1





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Tomplus 24.11.2016, 18:30:37
Go to the top of the page
+Quote Post
by_ikar
post 24.11.2016, 20:37:55
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


https://regexone.com/lesson/optional_characters przykład użycia: https://regex101.com/r/kOZott/1
Go to the top of the page
+Quote Post
Tomplus
post 24.11.2016, 20:57:07
Post #3





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.


Ten post edytował Tomplus 24.11.2016, 21:03:10
Go to the top of the page
+Quote Post
trueblue
post 24.11.2016, 21:14:17
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A co w przypadku:
Unia Polsko-litewska abc lub Unia Polsko-litewska 1985
?


--------------------
Go to the top of the page
+Quote Post
Tomplus
post 24.11.2016, 21:19:58
Post #5





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 13:06