regex101 findet 12 Treffer - HTTPMOD gibt nichts zurück

Begonnen von Marko1976, 26 März 2026, 23:31:08

Vorheriges Thema - Nächstes Thema

Marko1976

Nach wie vor liege ich mit Regex auf Kriegsfuss.
Habe jetzt regex101.com genutzt und dort gibt mir die Regex
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt=".*" src=".*" width=".*" height=".*" \/>
<\/div>
(.*)
<\/div>
Bei folgendem Seitencode
<div class=" "></div>

<h1 class="">Spielplan</h1>

<div id="c10" class="frame frame-default frame-type-list frame-layout-0">

<div class="row">
<div class="col-lg-12">

<style>
.teamshorts {
font-size:12px;
}
</style>
<div class="row playoff-fullsize">
<div class="col-lg-12">
<div class="card">
<div class="card__header">
<img class="pologo" alt="Playoff" src="/typo3temp/assets/_processed_/4/6/csm_PLAYOFF_LOGO_rot_eeabda88d8.png" width="105" height="15" />
</div>
<div class="card__content">

<div class="row my-3">
<div class="col">

<h3 class=" ml-4"></h3>

</div>
</div>
<div class="row">

</div>

<div class="row my-3">
<div class="col">

<img class="pologo" alt="Viertelfinale" src="/typo3temp/assets/_processed_/5/3/csm_Viertelfinale_Rot_Wort_1b67629b64.png" width="166" height="15" />

</div>
</div>
<div class="row">

<div class="col-12 col-lg-6 mx-auto my-3 singleseries">
<div class="col-12">
<div class="row">
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Kölner Haie" src="/fileadmin/images/teams/2023/team_11.svg" width="200" height="176" />
</div>
Kölner Haie
</div>
<div class="col-2 text-center">
Serie<br>
<h3>1:0</h3>
</div>
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Schwenninger Wild Wings" src="/fileadmin/images/teams/2023/team_15.svg" width="200" height="114" />
</div>
Schwenninger Wild Wings
</div>
</div>
</div>
<div class="col-12 mt-3">
<div class="row">

<div class="col text-center gameentry">
<span class="teamshorts">SWW:KEC</span><br>
<a href="/statistik/spieldetails/25032026_schwenninger-wild-wings_gg_koelner-haie_4341">
0:1
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">KEC:SWW</span><br>
27.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">SWW:KEC</span><br>
29.03.<br>
15:00</div>

<div class="col text-center gameentry">
<span class="teamshorts">KEC:SWW</span><br>
31.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">SWW:KEC</span><br>
02.04.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">KEC:SWW</span><br>
04.04.<br>
15:00</div>

<div class="col text-center gameentry">
<span class="teamshorts">KEC:SWW</span><br>
06.04.<br>
00:00</div>

</div>
</div>
</div>

<div class="col-12 col-lg-6 mx-auto my-3 singleseries">
<div class="col-12">
<div class="row">
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Adler Mannheim" src="/fileadmin/images/teams/2023/team_2.svg" width="200" height="200" />
</div>
Adler Mannheim
</div>
<div class="col-2 text-center">
Serie<br>
<h3>1:0</h3>
</div>
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Pinguins Bremerhaven" src="/fileadmin/images/teams/2023/team_9.svg" width="184" height="200" />
</div>
Pinguins Bremerhaven
</div>
</div>
</div>
<div class="col-12 mt-3">
<div class="row">

<div class="col text-center gameentry">
<span class="teamshorts">MAN:BHV</span><br>
<a href="/statistik/spieldetails/25032026_adler-mannheim_gg_pinguins-bremerhaven_4340">
5:2
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">BHV:MAN</span><br>
27.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">MAN:BHV</span><br>
29.03.<br>
16:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">BHV:MAN</span><br>
31.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">MAN:BHV</span><br>
02.04.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">BHV:MAN</span><br>
04.04.<br>
19:00</div>

<div class="col text-center gameentry">
<span class="teamshorts">MAN:BHV</span><br>
06.04.<br>
00:00</div>

</div>
</div>
</div>

<div class="col-12 col-lg-6 mx-auto my-3 singleseries">
<div class="col-12">
<div class="row">
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Straubing Tigers" src="/fileadmin/images/teams/2023/team_6.svg" width="174" height="200" />
</div>
Straubing Tigers
</div>
<div class="col-2 text-center">
Serie<br>
<h3>1:0</h3>
</div>
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Eisbären Berlin" src="/fileadmin/images/teams/2023/team_3.svg" width="160" height="160" />
</div>
Eisbären Berlin
</div>
</div>
</div>
<div class="col-12 mt-3">
<div class="row">

<div class="col text-center gameentry">
<span class="teamshorts">STR:EBB</span><br>
<a href="/statistik/spieldetails/24032026_straubing-tigers_gg_eisbaeren-berlin_4339">
5:1
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">EBB:STR</span><br>
27.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">STR:EBB</span><br>
29.03.<br>
14:00</div>

<div class="col text-center gameentry">
<span class="teamshorts">EBB:STR</span><br>
31.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">STR:EBB</span><br>
02.04.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">EBB:STR</span><br>
04.04.<br>
16:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">STR:EBB</span><br>
06.04.<br>
00:00</div>

</div>
</div>
</div>

<div class="col-12 col-lg-6 mx-auto my-3 singleseries">
<div class="col-12">
<div class="row">
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="EHC Red Bull München" src="/fileadmin/images/teams/2023/team_12.svg" width="200" height="160" />
</div>
EHC Red Bull München
</div>
<div class="col-2 text-center">
Serie<br>
<h3>0:1</h3>
</div>
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="ERC Ingolstadt" src="/fileadmin/_processed_/5/c/csm_team_1_7a9cf9eecf.png" width="181" height="200" />
</div>
ERC Ingolstadt
</div>
</div>
</div>
<div class="col-12 mt-3">
<div class="row">

<div class="col text-center gameentry">
<span class="teamshorts">RBM:ING</span><br>
<a href="/statistik/spieldetails/24032026_ehc-red-bull-muenchen_gg_erc-ingolstadt_4338">
5:6
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">ING:RBM</span><br>
27.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">RBM:ING</span><br>
29.03.<br>
19:00</div>

<div class="col text-center gameentry">
<span class="teamshorts">ING:RBM</span><br>
31.03.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">RBM:ING</span><br>
02.04.<br>
19:30</div>

<div class="col text-center gameentry">
<span class="teamshorts">ING:RBM</span><br>
04.04.<br>
14:00</div>

<div class="col text-center gameentry">
<span class="teamshorts">RBM:ING</span><br>
06.04.<br>
00:00</div>

</div>
</div>
</div>

</div>

<div class="row my-3">
<div class="col">

<h3 class=" ml-4">1. Playoff-Runde</h3>

</div>
</div>
<div class="row">

<div class="col-12 col-lg-6 mx-auto my-3 singleseries">
<div class="col-12">
<div class="row">
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Pinguins Bremerhaven" src="/fileadmin/images/teams/2023/team_9.svg" width="184" height="200" />
</div>
Pinguins Bremerhaven
</div>
<div class="col-2 text-center">
Serie<br>
<h3>2:0</h3>
</div>
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Nürnberg Ice Tigers" src="/fileadmin/images/teams/2023/team_14.svg" width="177" height="200" />
</div>
Nürnberg Ice Tigers
</div>
</div>
</div>
<div class="col-12 mt-3">
<div class="row">

<div class="col text-center gameentry">
<span class="teamshorts">BHV:NIT</span><br>
<a href="/statistik/spieldetails/17032026_pinguins-bremerhaven_gg_nuernberg-ice-tigers_4334">
4:0
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">NIT:BHV</span><br>
<a href="/statistik/spieldetails/20032026_nuernberg-ice-tigers_gg_pinguins-bremerhaven_4336">
2:3
</a>
<br>

</div>

</div>
</div>
</div>

<div class="col-12 col-lg-6 mx-auto my-3 singleseries">
<div class="col-12">
<div class="row">
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Grizzlys Wolfsburg" src="/fileadmin/images/teams/2023/team_8.svg" width="190" height="200" />
</div>
Grizzlys Wolfsburg
</div>
<div class="col-2 text-center">
Serie<br>
<h3>1:2</h3>
</div>
<div class="col-5 text-center">
<div class="imgcontainer">
<img class="img-fluid poteamlogo" alt="Schwenninger Wild Wings" src="/fileadmin/images/teams/2023/team_15.svg" width="200" height="114" />
</div>
Schwenninger Wild Wings
</div>
</div>
</div>
<div class="col-12 mt-3">
<div class="row">

<div class="col text-center gameentry">
<span class="teamshorts">WOB:SWW</span><br>
<a href="/statistik/spieldetails/18032026_grizzlys-wolfsburg_gg_schwenninger-wild-wings_4335">
3:1
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">SWW:WOB</span><br>
<a href="/statistik/spieldetails/20032026_schwenninger-wild-wings_gg_grizzlys-wolfsburg_4337">
5:1
</a>
<br>

</div>

<div class="col text-center gameentry">
<span class="teamshorts">WOB:SWW</span><br>
<a href="/statistik/spieldetails/22032026_grizzlys-wolfsburg_gg_schwenninger-wild-wings_4354">
2:3
</a>
<br>
OT
</div>

</div>
</div>
</div>

</div>

</div>
</div>
</div>
</div>

</div>
</div>

</div>

</div>
</div>

<!-- Footer ================================================== -->
<footer id="footer" class="footer">
<!-- Footer Widgets -->
<div class="footer-widgets">
<div class="footer-widgets__inner">
<div class="container">
<div class="row">
<div class="col-12">
<!-- Main Navigation -->

<h3 class="widget__title">Intern</h3>
<div class="row">

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/ligabuero"
target=""
title="Ligabüro"
>Ligabüro</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="https://www.championshockeyleague.com/"
target="_blank"
title="Champions Hockey League"
>Champions Hockey League</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="https://www.hockeyeurope.eu/"
target="_blank"
title="Hockey  Europe"
>Hockey  Europe</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="https://profisport-deutschland.de/"
target="_blank"
title="Initiative Profisport Deutschland"
>Initiative Profisport Deutschland</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="https://www.eurohockeyclubs.com/"
target="_blank"
title="Alliance of European Hockey Clubs"
>Alliance of European Hockey Clubs</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="https://vsa-ev.de/"
target="_blank"
title="Vereinigung Sportsponsoring-Anbieter"
>Vereinigung Sportsponsoring-Anbieter</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/spielervermittler"
target=""
title="Spielervermittler"
>Spielervermittler</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/partner"
target=""
title="Partner"
>Partner</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/kontakt-presse"
target=""
title="Kontakt/Presse"
>Kontakt/Presse</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/impressum"
target=""
title="Impressum"
>Impressum</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/datenschutz"
target=""
title="Datenschutz"
>Datenschutz</a>
</div>

<div class="col-12 col-sm-6 col-md-3 mb-2">
<a href="/intern/datenschutz-fantasy"
target=""
title="Datenschutz - Fantasy"
>Datenschutz - Fantasy</a>
</div>

</div>

</div>
</div>
</div>
</div>
</div>
<!-- Footer Widgets / End -->

<!-- Footer Secondary -->
<div class="footer-secondary">
<div class="container">
<div class="footer-secondary__inner">
<div class="row">
<div class="col-lg-12">
<!-- Social Links -->
<ul class="social-links social-links--btn social-links--btn-plus">
<li class="social-links__item">
<a href="https://www.instagram.com/penny.del/" target="_blank" class="social-links__link social-links__link--instagram">
<i class="fab fa-instagram"></i>
<span class="social-links__label">Instagram</span>
<span class="social-links__icon"><i class="fas fa-plus"></i></span>
</a>
</li>
<li class="social-links__item">
<a href="https://www.facebook.com/PENNY.DEL" target="_blank" class="social-links__link social-links__link--facebook">
<i class="fab fa-facebook"></i>
<span class="social-links__label">Facebook</span>
<span class="social-links__icon"><i class="fas fa-plus"></i></span>
</a>
</li>
<li class="social-links__item">
<a href="https://www.threads.com/@penny.del" target="_blank" class="social-links__link social-links__link--threads">
<img src="/_assets/e4ccd237e60ebadf8c55c336e47a814f/images/social/threads/logo.svg" width="21" height="21" alt="" />
<span class="social-links__label">Threads</span>
<span class="social-links__icon"><i class="fas fa-plus"></i></span>
</a>
</li>
<li class="social-links__item">
<a href="https://youtube.com/@PennyDEL" target="_blank" class="social-links__link social-links__link--youtube">
<i class="fab fa-youtube"></i>
<span class="social-links__label">Youtube</span>
<span class="social-links__icon"><i class="fas fa-plus"></i></span>
</a>
</li>
<li class="social-links__item">
<a href="https://tiktok.com/@penny.del" target="_blank" class="social-links__link social-links__link--tiktok">
<i class="fab fa-tiktok"></i>
<span class="social-links__label">TikTok</span>
<span class="social-links__icon"><i class="fas fa-plus"></i></span>
</a>
</li>
<li class="social-links__item">
<a href="https://www.linkedin.com/company/penny-del" target="_blank" class="social-links__link social-links__link--linkedin">
<i class="fab fa-linkedin"></i>
<span class="social-links__label">Linkedin</span>
<span class="social-links__icon"><i class="fas fa-plus"></i></span>
</a>
</li>
</ul>
<!-- Social Links / End -->
</div>
</div>
</div>
</div>
</div>
<!-- Footer Secondary / End -->
</footer>
<!-- Footer / End -->
</div>
insgesamt 12 Treffer zurück.

Egal ob ich die Regex genauso wie oben oder in einer einzigen Zeile im Device eingebe wird dort leider gar nichts zurück gegeben und ich verstehe einfach nicht wieso.
Hier noch das List des HTTPMOD-Device:
Internals:
   BUSY       0
   DEF        https://www.penny-del.org/spiele 3000
   FUUID      66cf7fe7-f33f-7706-7aa6-c94072d116681b44
   FVERSION   98_HTTPMOD.pm:0.291590/2024-09-23
   Interval   3000
   MainURL    https://www.penny-del.org/spiele
   ModuleVersion 4.2.0 - 11.8.2023
   NAME       hockey_playoff
   NOTIFYDEV  global
   NR         381
   NTFY_ORDER 50-hockey_playoff
   STATE      name-1
   TYPE       HTTPMOD
   eventCount 147
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://www.penny-del.org:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://www.penny-del.org/spiele
     header     
     host       www.penny-del.org
     httpheader HTTP/1.1 200 OK
date: Thu, 26 Mar 2026 22:19:02 GMT
server: Apache/2.4.52 (Ubuntu)
content-language: de-DE
cache-control: max-age=0
expires: Thu, 26 Mar 2026 22:19:02 GMT
vary: Accept-Encoding
content-encoding: gzip
x-ua-compatible: IE=edge
x-content-type-options: nosniff
content-length: 8979
keep-alive: timeout=5, max=100
content-type: text/html; charset=utf-8
connection: close
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /spiele
     protocol   https
     redirects  0
     timeout    60
     url        https://www.penny-del.org/spiele
     sslargs:
   OLDREADINGS:
   QUEUE:
   READINGS:
     2026-03-26 23:19:02   standing-1      1:0
     2026-03-26 23:19:02   standing-2      1:0
     2026-03-26 23:19:02   standing-3      1:0
     2026-03-26 23:19:02   standing-4      0:1
     2026-03-26 23:19:02   standing-5      2:0
     2026-03-26 23:19:02   standing-6      1:2
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.penny-del.org/spiele
   defptr:
     readingBase:
       logo-1     reading
       logo-2     reading
       logo-3     reading
       logo-4     reading
       name-1     reading
       name-10    reading
       name-11    reading
       name-12    reading
       name-2     reading
       name-3     reading
       name-4     reading
       name-5     reading
       name-6     reading
       name-7     reading
       name-8     reading
       name-9     reading
       standing-1 reading
       standing-2 reading
       standing-3 reading
       standing-4 reading
       standing-5 reading
       standing-6 reading
       standing-7 reading
       standing-8 reading
       standing-9 reading
     readingNum:
       logo-1     02
       logo-2     02
       logo-3     02
       logo-4     02
       name-1     01
       name-10    01
       name-11    01
       name-12    01
       name-2     01
       name-3     01
       name-4     01
       name-5     01
       name-6     01
       name-7     01
       name-8     01
       name-9     01
       standing-1 03
       standing-2 03
       standing-3 03
       standing-4 03
       standing-5 03
       standing-6 03
       standing-7 03
       standing-8 03
       standing-9 03
     readingOutdated:
     readingSubNum:
       logo-1     -1
       logo-2     -2
       logo-3     -3
       logo-4     -4
       name-1     -1
       name-10    -10
       name-11    -11
       name-12    -12
       name-2     -2
       name-3     -3
       name-4     -4
       name-5     -5
       name-6     -6
       name-7     -7
       name-8     -8
       name-9     -9
       standing-1 -1
       standing-2 -2
       standing-3 -3
       standing-4 -4
       standing-5 -5
       standing-6 -6
       standing-7 -7
       standing-8 -8
       standing-9 -9
     requestReadings:
       update:
         logo-1     reading 02-1
         logo-2     reading 02-2
         logo-3     reading 02-3
         logo-4     reading 02-4
         name-1     reading 01-1
         name-10    reading 01-10
         name-11    reading 01-11
         name-12    reading 01-12
         name-2     reading 01-2
         name-3     reading 01-3
         name-4     reading 01-4
         name-5     reading 01-5
         name-6     reading 01-6
         name-7     reading 01-7
         name-8     reading 01-8
         name-9     reading 01-9
         standing-1 reading 03-1
         standing-2 reading 03-2
         standing-3 reading 03-3
         standing-4 reading 03-4
         standing-5 reading 03-5
         standing-6 reading 03-6
         standing-7 reading 03-7
         standing-8 reading 03-8
         standing-9 reading 03-9
Attributes:
   alias      DEL Play-Off's
   enableControlSet 1
   group      Eishockey
   icon       Wunderlist
   reading01Name name
   reading01RegOpt g
   reading01Regex <div class="col-5 text-center"> <div class="imgcontainer"> <img class="img-fluid poteamlogo" alt=".*" src=".*" width=".*" height=".*" \/> <\/div> (.*) <\/div>
   reading02Name logo
   reading02RegOpt g
   reading02Regex <div xclass="imgcontainer"><img class="img-fluid poteamlogo" alt=.* src="(.*)" width="200" height="176" /></div>
   reading03Name standing
   reading03RegOpt g
   reading03Regex <h3>(.*)<\/h3>
   reading04Name nameVF
   reading04RegOpt g
   reading04Regex <p class="hw-appdb__playoff__round__serie__info">(.*)<\/p>
   room       Information->Sport
   stateFormat name-1
   timeout    60
   userattr   .*
   verbose    0
Es geht erstmal nur um das Reading1, also das Reading "name". "logo" ist noch nicht bearbeitet und "standing" funktioniert. "nameVF" ist für einen Versuch vorgesehen, da ich noch andere Ideen habe die ich gerne umsetzen möchte.

Ich möchte diesen Mist endlich verstehen, daher wäre ich für jeden Tip dankbar.

Guybrush

du musst auch line breaks etc mit in deinen match aufnehmen. dein regex kann so nicht funktionieren. Wenn du nur die Namen haben willst, dann passt die regex hier:

^<\/div>$\s^(\w[\s\w]*)$\s^<\/div>$

grundsätzlich immer die kürzest mögliche regex wählen. das ist in deinem fall die obige. Das von dir gesuchte steht einzeln in einer Zeile bestehend aus mindestens einem oder mehreren Wörtern. in den zeilen davor/dahinter kommt jeweils nur ein </div> vor. es sind 8 treffer.

Marko1976

Dann nutzt regex101 ja prinzipiell doch wieder nichts, denn da werden die Treffer ja auch so gefunden.
Apropo Treffer, es sollten eigentlich 12 sein, aber da muss ich mir den Quelltext noch mal genau ansehen.
Die Frage ist allerdings was die Bedeutung von
(\w[\s\w]*)im einzelnen ist. /w und /s ist klar, aber speziell die eckige Klammer ist für mich unverständlich. Da aber einige Treffer aus mehr als zwei Wörtern bestehen ist hier wohl auch der Grund warum nur 8 statt 12 Treffer gematcht werden

Guybrush

regex101 ist ein super tool und hilft auch mir bei komplexeren regex. wie gesagt - deine regex war schon unnötig lang und es fehlten z.b. die linebreaks (\s). habs nicht bei regex101 nachgestellt, aber kann mir nicht vorstellen, dass das da so auch ging.

wegen deiner Frage nach der Bedeutung der Regex

\w = irgendein Wort (dafür könnte man auch [a-zA-z0-9_] nehmen, was das gleiche wäre)
[\s\w]* leerzeichen oder wörter, die weiter vorkommen können, aber nicht müssen

Kölner Haie würdest du mit \w finden. Damit du " Haie" findest, brauchst du [\s\w]. In dem konkreten Beispiel könntest du auch \w\s\w machen, was auch matchen würde. Aber da es auch mehr als 2 wörter geben kann und ggf. mehrere leerzeichen auch hintereinander kommen ist [\s\w] besser, da die Reihenfolge dann keine Rolle mehr spielt. Das * bedeutet nur, dass es vorkommen kann, aber nicht muss.