Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


RegExp trubbel

Postades av 2003-03-31 23:41:17 - Ola Herrdahl, i forum regular expressions, Tråden har 4 Kommentarer och lästs av 1186 personer

Nu är detta inte ett ASP specifikt problem men det får hamna här ändå.

Jag vill fånga upp "C kommentarer":
/* kommentar */
/* (<-observera att jag har blanksteg här)
* kommentar som inte matchas, mitt problem alltså
*/

Funktionen om nån vill testa:
<code>
Function ReplaceTest(str, patrn, replStr)
Dim regEx ' Create variables.
Set regEx = New RegExp ' Create regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Make case insensitive.
regEx.Global = True ' Set global applicability.
regEx.MultiLine = True
ReplaceTest = regEx.Replace(str, replStr) ' Make replacement.
End Function
'Mitt anrop
strContent=ReplaceTest(strContent, "/\* (.*) \*/", "<span class=""comment"">/*&nbsp;$1&nbsp;*/</span>") ' Make replacement.
</code>

Mönstret borde väl vara "/\* ([.\n]*) \*/" men då fångar den inget, som det är nu tar den med kommentarer på samma rad iaf.
Nån som har någon aning om vad som är fel?


Svara

Sv: RegExp trubbel

Postades av 2003-04-01 08:23:47 - Fredrik Lindberg

Här är ett exempel på hur man kan skriva:

<code>
static private void StripComments (string name) {
StreamReader sr;
string all;
Regex rg = new Regex(@"/\*.*?\*/", RegexOptions.Singleline);


try {
sr = new System.IO.StreamReader (name);
all = sr.ReadToEnd ();
System.Console.WriteLine (rg.Replace (all, ""));
}
catch (Exception ex) {
System.Console.Error.WriteLine (ex.Message);
}
}
</code>
Koden klarar inte kommentarer i kommentarer, dvs nästlade kommentarer.

Jag använder RegexOptions.Singleline för att ändra betydelsen av "." Istället för att
matcha alla tecken utom \n matchar den nu alla tecken. Jag skulle också kunna
skriva

<code>
Regex rg = new Regex (@"/\*(.|\n)*?\*/", RegexOptions.Multiline);
</code>

för att tala om att strängen jag matchar innehåller flera rader. Jag måste dock matcha
newline explicit. Multiline ändrar betydelsen av ^ och $ så de matchar början och slutet
av rader snarare än strängen som helhet.

Notera att i en [] konstruktion betyder . bara . och inte vilket-tecken-som-helst.


Mvh
Fredrik


Svara

Sv: RegExp trubbel

Postades av 2003-04-01 12:45:41 - Ola Herrdahl

Det där hjälper mig inte speciellt mycket heller tyvärr.
Det är VBS jag skriver det i så jag kan inte göra på ditt sätt (hittar ingen singeline egenskap).
I Java har jag däremot fått det att funka med multi o singleline flaggorna.

Det där med [.] förstår jag inte riktigt eftersom referensmanualen säger:
"Matches any single character except "\n". To match any character including the '\n', use a pattern such as '[.\n]'."
Men jag tvivlar inte på det du säger eftersom det inte funkar alls när jag gör så.


Svara

Sv: RegExp trubbel

Postades av 2003-04-01 13:39:00 - Fredrik Lindberg

Hej igen.
Jag provade följande kod i VBScript.

<code>
Dim fs, stream, text, regEx

Set fs = CreateObject("Scripting.FileSystemObject")
Set stream = fs.OpenTextFile ("urk", 1)
text = stream.ReadAll

Set regEx = New RegExp
regEx.Pattern = "/\*(.|\n)*?\*/"
regEx.Global = True
Str = regEx.Replace(text, "")
WScript.Echo Str

</code>

Filen urk innehåller följande
<code>
hej
/* Dont show this */
du
/* and not
this */
glade
</code>

Om jag kör ovanstående skript så visar den all text utanför kommentarerna
Notera att jag läser in hela filen i en sträng och inte rad för rad.

Anledningen till frågetecknet förresten efter (.|\n)*? är för att göra en sk
non-greedy match så den inte slukar allt fram till sista */. Vi vill bara matcha
fram till första matchningen s a s.

Mvh
Fredrik


Svara

Sv: RegExp trubbel

Postades av 2003-04-01 14:31:44 - Ola Herrdahl

Nu börjar det likna nåt, den matchar nu men $1 matchar nu bara första tecknet innom kommentaren o det var inte riktigt vad jag hade tänkt mig om du tittar på det översta exemplet t.ex.

Dock löste jag det lilla problemet själv nu, tack så mycket för din hjälp.
Jag hade tidigare testat "/\* ((.|\n)*) \*/" men det fungerade inte heller, dock var ju frågetecknet lösningen på det problemet.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
785
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies