Autor | Zpráva | ||
---|---|---|---|
stepanka Profil * |
#1 · Zasláno: 14. 2. 2012, 14:02:33
Ahoj,
mohla bych poprosit o pomoc s regulárním výrazem? Mám řetězce: D-15-1 A-1-2 E-3-18 B-3-7 B-135-2 tzn. písmeno, pomlčka, číslo, pomlčka, číslo. Potřebovala bych zjistit to prostřední číslo, tedy 15, 1, 3, 3 a 135. Neuměl by někdo prosím poradit? Už se s tím trápím dlouho. Moc děkuju! |
||
Tori Profil |
#2 · Zasláno: 14. 2. 2012, 14:15:38
A jak jste to zkoušela? Stačí docela jednoduše: [pomlčka] [1 nebo více znaků, které nejsou pomlčkou] [pomlčka], a tu prostřední část dát do závorky, aby to preg_match vrátil samostatně.
|
||
stepanka Profil * |
#3 · Zasláno: 14. 2. 2012, 14:45:10
Tori:
Děkuju za reakci, zkouším to pořád dál, přiznávám se, že metodou pokus-omyl. Už mám: preg_match('^\-(*)\-$', $dany_retezec, $matches); echo $matches[0]; Pořád to ale hází nějaký Warning, případně to vezme špatně. Budu moc vděčná za pomoc. |
||
Ugo Profil |
#4 · Zasláno: 14. 2. 2012, 14:50:16
stepanka:
ta hvězdička je taková osamocená, chybí jí znak/y který má opakovat, a warning ti to bude hlásit, protože tam nemáš znaky kolem reguláru, první znak (^) taky říká že se jedná o začátek řetězce, čili řetězec v $dany_retezec by musel začínat a končit ($) pomlčkou, zkus : '#\-(.*)\-#' to bude blíže výsledku. |
||
Keeehi Profil |
#5 · Zasláno: 14. 2. 2012, 14:54:20
preg_match('~-(\d+)-~', $dany_retezec, $matches); echo $matches[1]; Pokud máš těch výskytů v řetězci více, budeš muset použít preg_match_all. |
||
Tori Profil |
#6 · Zasláno: 14. 2. 2012, 14:56:00
stepanka:
Nebo v té závorce může být (\d+) - tzn. "jedna nebo více číslic", nebo ([^-]+) (= "jeden nebo více znaků, které nejsou pomlčkou"). Záleží, jak přesně to chcete/potřebujete definovat.
|
||
stepanka Profil * |
#7 · Zasláno: 14. 2. 2012, 15:09:30
Moc vám všem děkuju, použila jsem řešení od Keeehi a funguje parádně. Ještě jednou díky.
|
||
Časová prodleva: 12 let
|
0