webForumDet fria alternativet

regex hjälp

PHP

3 svar · 323 visningar · startad av Blixtsystems

Medlem sedan maj 2005704 inlägg
Frågan#1

Hej,

Håller på att sliter mig i håret med följande:

Har denna text (hand historia för poker):

[-------------------------------------------------------------------------------------------]

** Game ID 1316231597 starting - 2007-04-10 14:59:41
** Gutshot Holdem [Hold 'em] (25.00|50.00 No Limit - Cash Game) Real Money

- FowlersFan sitting in seat 1 with $3098.00
- A_Poker_Punk sitting in seat 2 with $3422.00 [Dealer]
- I_Want_Chips sitting in seat 3 with $3225.00
- Cashman66 sitting in seat 4 with $1350.00
- I_Tilt_Often sitting in seat 5 with $2975.00
- Super_Hero sitting in seat 6 with $2000.00 [Sitting out]

I_Want_Chips posted the small blind - $25.00
Cashman66 posted the big blind - $50.00
I_Tilt_Often called - $50.00
FowlersFan folded
A_Poker_Punk called - $50.00
I_Want_Chips called - $50.00
Cashman66 checked

** Dealing the flop: 9 of Clubs, 2 of Clubs, 3 of Hearts
I_Want_Chips checked
Cashman66 checked
I_Tilt_Often bet - $100.00
A_Poker_Punk folded
I_Want_Chips folded
Cashman66 folded
I_Tilt_Often mucks:
I_Tilt_Often wins $298.00 from the main pot

End of game 1316231597

[-------------------------------------------------------------------------------------------]

Jag vill plocka ut följande bit:

- FowlersFan sitting in seat 1 with $3098.00
- A_Poker_Punk sitting in seat 2 with $3422.00 [Dealer]
- I_Want_Chips sitting in seat 3 with $3225.00
- Cashman66 sitting in seat 4 with $1350.00
- I_Tilt_Often sitting in seat 5 with $2975.00
- Super_Hero sitting in seat 6 with $2000.00 [Sitting out]

Det jag har kört med är:
/-(.+)(with \$[\d.]+)\r?\n\r?\n/

Problemet med just denna hand är att den slutar ju inte med "with $00.00" utan "[Sitting out]" och det skulle kunna vara "[Dealer]".

Så då trodde jag att det skulle funka med typ:
/-(.+)((with \$[\d.]+)|\])\r?\n\r?\n/

Men icke sade nicke...varför inte?

Medlem sedan maj 2000144 inlägg
#2

går det inte göra det enkelt

Nu vet inte jag hur resten av texten ser ut (eller exakt vad du vill ha ut) :) .

Men varför inte göra det enkelt och söka bara på 'sitting in seat \d with ($[0-9\.]+?)' om det nu är dom raderna du vill ha ut (och vill ha ut beloppet)

annars så borde det räcka med att söka på texten...

Medlem sedan dec. 20025 483 inlägg
#3
/[\n\r]+((?:-[^\n\r]+)(?:[\n\r]+-[^\n\r]+)*)/

Hämta den första delmatchningen.

Medlem sedan maj 2005704 inlägg
#4

Jag vill ha hela stycket för att i en separat funktion kunna plocka ur all info som namn, sits och stack.

Modifierade den till detta som jag fick att funka:

/-(([][\r\n\w.-\s$]+)((with \$[\d.]+)|\])\r?\n\r?\n)/

Peters lösning ser dock betydligt smartare och snyggare ut och funkar prima.
Tackar :bire

247 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)