Reguliere expressies

Pagina: 1
Acties:

  • Super Snackman
  • Registratie: Januari 2000
  • Laatst online: 18-07 11:51
Hiya all,

ik wil graag wat meer weten over reguliere expressies. Ik weet al hoe ik (eindige) automaten kan maken, waar lees ik een mooi verhaal hoe ik zo'n automaat omzet in een reguliere expressie.

En dan nog iets:

Ik wil in de zin: 'de KoE loopt in de wei', gegeven een woord, dat woord veranderen. Hoe doe ik dat:

Het moet dus (volgens mij) iets zijn van:

$new = ereg_replace($pattern, $vervang, $zin);

Maar het patroon moet alle mogelijkheden van koe afvangen.
Dus kOe, KOe etc. En in de vervanging moet de koe in het zelfde formaat hoofd/kleine letters blijven staan. Wie wil mij helpen?

Flevostrand rulez! - It's a bird NO It's a plane NO IT IS SUPER SNACKMAN


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 16-09 21:52
Op zaterdag 20 oktober 2001 10:17 schreef Super Snackman het volgende:
Hiya all,

ik wil graag wat meer weten over reguliere expressies. Ik weet al hoe ik (eindige) automaten kan maken, waar lees ik een mooi verhaal hoe ik zo'n automaat omzet in een reguliere expressie.

En dan nog iets:

Ik wil in de zin: 'de KoE loopt in de wei', gegeven een woord, dat woord veranderen. Hoe doe ik dat:

Het moet dus (volgens mij) iets zijn van:

$new = ereg_replace($pattern, $vervang, $zin);

Maar het patroon moet alle mogelijkheden van koe afvangen.
Dus kOe, KOe etc. En in de vervanging moet de koe in het zelfde formaat hoofd/kleine letters blijven staan. Wie wil mij helpen?
Kan je niet eerst de hele zin omzetten in kleine letters en dan de positie van koe bepalen, dan van de oude string op die positie de stuff veranderen?

't is maar een idee...

Verbouwing


  • Super Snackman
  • Registratie: Januari 2000
  • Laatst online: 18-07 11:51
Als de oorspronkelijk zin is:

de KoE loopt in de wei

Dan moet de uiteindelijke zin (bijvoorbeeld) worden:

de <h1>KoE</h1> loopt in de wei

Dus als ik alles in kleine letters omzet, raak ik de (soms benodigde) hoofdletters kwijt

Flevostrand rulez! - It's a bird NO It's a plane NO IT IS SUPER SNACKMAN


  • blender
  • Registratie: Juni 2001
  • Niet online
Perl:

s/$woord1/woord2/g

;)

  • blender
  • Registratie: Juni 2001
  • Niet online
nogmaals perl: ;)
code:
1
2
3
$vervang = "KoE";

$vervangstring =~ s/$vervang/\<h1\>$1\<\/h1\>/g;

  • Super Snackman
  • Registratie: Januari 2000
  • Laatst online: 18-07 11:51
<?
$zin = "De KoE loopt in de wei";
$hilt = "koe";
echo eregi_replace($hilt, "<b>koe</b>", $zin);

?>

Dat heb ik tot nu toe, het enige wat ik moet weten is, wat moet ik tussen <b> en </b> zetten om KoE in de uitvoer te krijgen.

Flevostrand rulez! - It's a bird NO It's a plane NO IT IS SUPER SNACKMAN


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 16-09 21:52
Op zaterdag 20 oktober 2001 10:22 schreef Super Snackman het volgende:
Als de oorspronkelijk zin is:

de KoE loopt in de wei

Dan moet de uiteindelijke zin (bijvoorbeeld) worden:

de <h1>KoE</h1> loopt in de wei

Dus als ik alles in kleine letters omzet, raak ik de (soms benodigde) hoofdletters kwijt
Zo bedoel ik het niet. iets van:

$StringLaag = $OudString
Dan $StringLaag in kleine letters omzetten, de positie van koe bepalen.

Dan in $OudString op de positie van koe (waar dus KoE ofzo staat) eruithalen, als $koe definiëren, op de positie van koe in de string </H2> inzetten, dan $koe terugzetten erin, dan op de positie van koe <H2> zetten.

Verbouwing


  • Super Snackman
  • Registratie: Januari 2000
  • Laatst online: 18-07 11:51
Gelukt :)

<?
$zin = "De KoE loopt in de wei";
$hilt = "koe";
echo eregi_replace("(" . $hilt . ")", "<b>\\1</b>", $zin);

?>

Flevostrand rulez! - It's a bird NO It's a plane NO IT IS SUPER SNACKMAN


  • blender
  • Registratie: Juni 2001
  • Niet online
PHP huh?

http://www.php.net/manual/en/function.eregi-replace.php

\\1 .. \\9 gebruiken

Duss...

  • Super Snackman
  • Registratie: Januari 2000
  • Laatst online: 18-07 11:51
Maar kan iemand me iets vertellen over hoe ik een automaat in een patroon omzet?

BTW dit is wat ik uiteidenlijk heb gemaakt, een highlight functie. Is al vaker gemaakt, maja ik wilde het toch beetje zelf doen :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
function highlight($query, $zin)
{

while (strpos($query, "  "))                         //Zolang er dubbele spaties in de highlight-woorden zitten
 { $query = eregi_replace("  ", " ", $query); }      //Verwijder die dubbele spaties

$highlights = explode(" ", $query);                  //Gooi de te highlighten woorden in een array, door te scheiden
                                                     //op spatie


for ($i = 0; $i < count($highlights); $i ++)        //Tel van 0 tot het aantal woorden in de array, verhoog met 1
{ $zin = eregi_replace("(" . $highlights[$i] . ")", "<b>\\1</b>", $zin); }   //Maakt het te highlighten woord dik.

return $zin;                                        //Geef de gehighlighte zin terug.

}
?>

Flevostrand rulez! - It's a bird NO It's a plane NO IT IS SUPER SNACKMAN


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zaterdag 20 oktober 2001 10:59 schreef Super Snackman het volgende:
Maar kan iemand me iets vertellen over hoe ik een automaat in een patroon omzet?
een automaat in een patroon? wat bedoel je daarmee? :?

[edit]bedoel je dat je wilt weten hoe de regex-engine zelf werkt?
BTW dit is wat ik uiteidenlijk heb gemaakt, een highlight functie. Is al vaker gemaakt, maja ik wilde het toch beetje zelf doen :)
PHP:
1
2
3
4
5
6
<?
function highlight($query, $zin)
{
while (strpos($query, "  "))
{ $query = eregi_replace("  ", " ", $query); }
?>
die while is niet nodig, omdat eregi_replace gewoon alles in 1 keer vervangt.
Pagina: 1