Tengo una cuerda como esta
ch:keyword
ch:test
ch:some_text
Necesito una expresión regular que coincida con todas las cadenas, sin embargo, no debe coincidir con lo siguiente:
ch: (ch: is proceeded by a space, or any number of spaces)
ch: (ch: is proceeded by nothing)
Puedo deducir la longitud de la cadena con el "ch:" en ella. Cualquier ayuda sería apreciada; Estoy usando PHP "s preg_match ()
Editar: he intentado esto:
preg_match("/^ch:[A-Za-z_0-9]/", $str, $matches)
Sin embargo, esto solo coincide con 1 carácter después de la cadena. Traté de poner un * después del corchete de cierre, pero esto coincide con los espacios, que no quiero.
Respuestas
3 para la respuesta № 1preg_match("/^ch:(S+)/", $string, $matches);
print_r($matches);
S + es para hacer coincidir 1 o más caracteres no espaciales. Esto debería funcionar para ti.
2 para la respuesta № 2
$str = <<<TEXT
ch:keyword
ch:test
ch:
ch:some_text
ch: red
TEXT;
preg_match_all("|ch:(S+)|", $str, $matches);
echo "<pre>"; print_r($matches); echo "</pre>";
Salida:
Array
(
[0] => Array
(
[0] => ch:keyword
[1] => ch:test
[2] => ch:some_text
)
[1] => Array
(
[0] => keyword
[1] => test
[2] => some_text
)
)
2 para la respuesta № 3
Prueba esta expresión regular:
^ch:S.*$
0 para la respuesta № 4
Intenta usar esto:
preg_match("/(?<! +)ch:[^ ].*/", $str);