[perl] regex: exact matchen

Pagina: 1
Acties:

  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 02-07 13:03
Hoi,

ik heb een stringx = "select * from xyz where name='testvar20' and othername='testvar2'".
Nu zou ik graag alleen testvar2 veranderen en niet testvar20, via search and replace in een regular expression.
Is er iemand die weet hoe dit te doen zonder dat ook testvar20 veranderd?

Dus niet : stringx =~ s/testvar2/eennieuwewaarde/g; Dit zorgt ervoor dat testvar20 ook mee verandert in eennieuwewaarde0.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:16

crisp

Devver

Pixelated

aangeven dat de 2 gevolgd moet worden door een quote, maar die quote niet meenemen in de match. Dit kan dmv een look-ahead assertion: testvar2(?=')

Intentionally left blank


  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 02-07 13:03
crisp schreef op 21 May 2003 @ 12:24:
aangeven dat de 2 gevolgd moet worden door een quote, maar die quote niet meenemen in de match. Dit kan dmv een look-ahead assertion: testvar2(?=')
Het probleem is dat het niet perse gevolgd moet worden door een quote, het kan ook een nummer zijn, bv: stringx = "select * from xyz where name='testvar20' and othernumber=testvar2".

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:16

crisp

Devver

Pixelated

Trendkiller schreef op 21 May 2003 @ 12:28:
[...]
Het probleem is dat het niet perse gevolgd moet worden door een quote, het kan ook een nummer zijn, bv: stringx = "select * from xyz where name='testvar20' and othernumber=testvar2".
Dan draaien we het om en geven we aan dat de 2 niet gevolgd mag worden door een nummer :)

testvar2(?!\d)

Intentionally left blank


  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 02-07 13:03
OK, dit werkt. Bedankt!