webForumDet fria alternativet

Regex problem

.NET

4 svar · 1 154 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Jag har följande regex:

Regex userIdAndStatus = new Regex("doLoginLogout("(.+?)", "(.+?)","fn1")");

Det jag försöker matcha är denna html kod:

<a class="listlink" href="javascript:doLoginLogout(&quot;4&quot;, &quot;56746&quot;,&quot;fn1&quot;)">Logga in</a>

Värdena i detta fall som jag vill ha ut är 4 och 56746, men min regex hittar inget som matchar, så något har jag gjort fel.

Medlem sedan jan. 20023 327 inlägg
#2

Är det här input till ditt Regex?

<a class="listlink" href="javascript:doLoginLogout(&quot;4&quot;, &quot;56746&quot;,&quot;fn1&quot;)">Logga in</a>

I så fall skulle du väl kunna gör enligt följande (torrkodat), om det endast är id och status som du vill ha ut?

Regex userIdAndStatus = new Regex("\d+");
string link = "<a class="listlink" href="javascript:doLoginLogout(&quot;4&quot;, &quot;56746&quot;,&quot;fn1&quot;)">Logga in</a>";
MatchCollection matches = userIdAndStatus.Matches(link);

if (matches.Count > 1)
{
// matches[0] (userId)
// matches[1] (status)
}

Om du vill få ut det här i resultatet "doLoginLogout("4", "56746","fn1")" så bör du kunna använda följande uttryck

Regex userIdAndStatus = new Regex("doLoginLogout.&quot;\d+&quot;, &quot;\d+&quot;,&quot;fn1&quot;.")

Om jag är fel ute, så får du gärna specificera tydligare vad som är input och vad du vill ha som output....

Medlem sedan juni 20006 031 inlägg
#3

Mmm, kanske förklarade dåligt.

Det här är min kod, som alltså inte hittar någon match.

            Regex userIdAndStatus = new Regex("doLoginLogout(&quot;(.+?)&quot;, &quot;(.+?)&quot;,&quot;fn1&quot;)");
            
            statusNo = userIdAndStatus.Match(responseData).Groups[1].Value;
            id = userIdAndStatus.Match(responseData).Groups[2].Value;

Variabeln responseData innehåller en del html kod, bland annat den kodsnutten som jag postade tidigare.

Jag testade även din kod med MatchCollection, men den hittade inte heller något som matchade regex'en.
Hoppas det här förklarar bättre.

Medlem sedan juni 20006 031 inlägg
#4

Hittade felet som var att html koden innehöll parenteser vilket fick min regex att få fnatt.

Medlem sedan jan. 20023 327 inlägg
#5

Yes, men det var därför jag bytte ut '(' och ')' mot '.' i det andra exemplet, men det kanske inte var tillräckligt? :q

Regex userIdAndStatus = new Regex("doLoginLogout[b][FONT="Arial Black"].[/FONT][/b]&quot;\d+&quot;, &quot;\d+&quot;,&quot;fn1&quot;[B][FONT="Arial Black"].[/FONT][/B]")
253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)