Hogy lehet regex-el ezt megcsinálni?
Olyan keresést szeretnék megvalósítani, aminél a szavak közötti jelek nem számítanak.
Tehát pl. az ABC DEF -et keresve találat lenne ezek mindegyikére:
ABC, DEF
ABC "DEF"
"ABC" DEF
ABC - DEF
Vagyis a keresésnél csak a betűket, számokat vegye figyelembe az egész string-ben.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Én \W*-ot (nem alfanumerikus karakter 0-szor vagy sokszor) írnék a betűk közé, tehát pl.
A\W*B\W*C\W*D
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
[a-zA-Z0-9]+
A regex ennél okosabb, ez csak a betűket és a számokat veszi figyelembe, más karaktert nem. Python ->
import re
text = "Hello, World! 1234. This is a test: ABCdef567."
matches = re.findall(r'[a-zA-Z0-9]+', text)
print(matches)
->
['Hello', 'World', '1234', 'This', 'is', 'a', 'test', 'ABCdef567']
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
#4 ez nem azt csinálja amit a kérdező akar, példákat adott, nem azt amit konkrétan keresni akar. "Vagyis a keresésnél csak a betűket, számokat vegye figyelembe az egész string-ben."
Plusz a kereséshez amit írtál a regex ágyúval verébre, kb bármelyik nyelv string contains() metódusa elég lenne ide.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Csak azt kell tudni, hogy benne van-e vagy ha benne van, akkor milyen formában?
Előbbi esetben simán hoz létre egy olyan stringet amiből kiszűröd a nem kívánt karaktereket.. utána ráengedheted a regexet, bár ha az csak fix stringet keres, akkor elég a sima contains is.
Ha az is kell, hogy az eredeti stringben hol és miként szerepel, akkor hozz létre egy map-et amikor a szűrt stringet csináod. Ez pl egy lista ami a szűrt string hosszával megegyező int lista és az egyes értékek azt tartalmazzák, hogy az új string i. karaktere az eredeti string hanyadik karaakterének felel meg.
Pl:
eredeti string: XY "ABC" DEF ZZ
a szűrt string: XY ABC DEF ZZ
a map: 0 1 2 3 5 7 8 9 10 11 12 13 14
A találat helye a szűrt stringben: 3-9
A map alapján: 3-11
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Talán ez:
\b(?:\W?)A(?:\W*)B(?:\W*)C(?:\W*)D(?:\W*)E(?:\W*)F(?:\W?)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!