WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   RegExp - Plocka ut text mellan " och " (https://www.wn.se/forum/showthread.php?t=26050)

Ungdebatt 2008-01-06 12:45

Hej

Som rubriken lyder så försöker jag plocka ut text som ligger mellan " och ", men jag har tyvärr misslyckats med det.

Ex: Denna text påverkas inte "Men denna text påverkas"

Jag försöker även plocka ut texten som står efter ett ', t.ex.

Ex: Denna text ska inte matcha mönstret 'Men denna text ska göra det

Är det någon som kan hjälpa mig med någon av dessa regexp mönstrena?

Reager 2008-01-06 13:05

Till den första bör väl

"(.*)?"

fungera

och till den andra

'(.*)?

Är dock ingen stjärna på detta så det kanske finns bättre mönster att använda.

Magnus_A 2008-01-06 13:10

Fall 1: Splitta på " och ta varannan.
Fall 2: \'(.*)$ borde fungera i det exempel du ger.

Ungdebatt 2008-01-06 14:13

jag prövade med \'(.*)$ och det fungerade finfint, men bara på den första raden den hittade. När jag försökte loopa igenom texten som skulle kontrolleras med följande kod:

Kod:

          intMatches = 1
 
          Do Until intMatches = 0
    .Pattern = "'(.*)?"
    Set intMatch = .Execute(strNewText)
    strNewText = .Replace(strNewText,"<span class=""classGray"">'$1</span>")
   
    intMatches = intMatch.Count
          Loop
         
          Set intMatch = Nothing

så fick jag detta felmeddelande:

Citat:

ctive Server Pages error 'ASP 0113'

Script timed out

/code/Index.asp

The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.


Ungdebatt 2008-01-06 14:58

Jag löste det med följande koder:

Kod:

          intMatches = 1
 
          Do Until intMatches = 0
    .Pattern = "\'([^\[]*?)[\n]"
    Set intMatch = .Execute(dd)
    strNewText = .Replace(strNewText,"<span class=""classGray"">'$1"&vbcrlf&"</span>")
   
    intMatches = intMatch.Count
          Loop
         
          Set intMatch = Nothing


Kod:

          intMatches = 1
 
          Do Until intMatches = 0
    .Pattern = "\"([^\[]*?)\""
    Set intMatch = .Execute(strNewText)
    strNewText = .Replace(strNewText,"<span class=""classGreen"">""$1""</span>")       
   
    intMatches = intMatch.Count
          Loop
         
          Set intMatch = Nothing

Tack för hjälpen.


Alla tider är GMT +2. Klockan är nu 12:15.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson