Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML]wyrażenia regularne - formatowanie komórki w wierszu tabeli
matusjamar
post 11.12.2010, 23:09:07
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.12.2010

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


Witam. Mam problem z wyrażeniem regularnym, za pomocą którego chciałbym nadać klasę np. w co 6tej komórce wiersza tabeli. Wzór mojego wyrażenia:
<tr>\s*(<td[^.]*?</td>\s*){5}<td([^.]*?</td>\s*)\s*</tr>\s*
znajduje 5 komórek i 6tą do objęcia klasą.
Dokonuję zamiany przy mocy wyrażenia:
<tr>$1<td class="nazwa klasy"$2</tr>\n
Problem polega na tym, że mój sposób usuwa z wiersza pierwsze 4 komórki. Zostaje tylko 5ta i 6ta-objęta klasą.
Może jest na to jakaś rada? Przy małej ilości komórek w wierszu można stosować co prawda:
<tr>\s*(<td[^.]*?</td>\s*)(<td[^.]*?</td>\s*)(<td[^.]*?</td>\s*)(<td[^.]*?</td>\s*)(<td[^.]*?</td>\s*)<td([^.]*?</td>\s*)\s*</tr>\s*
i zamienić przez:
<tr>$1$2$3$4$5<td class="nazwa klasy"$6</tr>\n
ale przy większej ilości komórek będzie i z tym problem.
Może ktoś... ?
winksmiley.jpg
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
tolomei
post 12.12.2010, 00:07:53
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Cześć smile.gif

Nie wiem czemu dałeś [^.] co oznaczałoby "wszystko oprócz dowolnego znaku". W praktyce pasuje tu tylko znak nowego wiersza.

Twoje wyrażenie będzie wyglądało tak:

<tr>\s*((?:<td.*?</td>\s*)+)<td(.*?</td>\s*)\s*</tr>\s*


Pozdrawiam smile.gif
tolomei


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
matusjamar
post 13.12.2010, 09:26:56
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.12.2010

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


Dzięki za odpowiedź tolomei. Racja jeśli chodzi o pierwszą kwestię (chociaż obie wersje sprawdzają się w wyszukiwaniu).
Jednak co do całego wyrażenia, które zamieściłeś - nie działa (sprawdziłem w Pajączku 5.8 i EmEditor 10 oraz na stronie maciek.lasyk.info/regexp_checker.html.
Poza tym stosując do mojego wzoru Twoją propozycję wychodzi mi mniej więcej:
<tr.*?(<td.*?</td>\s*){5}<td(.*?</td>\s*)</tr>
Wzór działa przy wyszukiwaniu jak starsza wersja jednak przy zamianie problem jest ten sam
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: 31.07.2025 - 10:54