solo simplificar regulares regular probar online letras expresiones expresion espacios espacio ejemplos cualquier caracter blanco alfanumerico php regex

simplificar - Php pone un espacio delante de las mayúsculas en una cadena(Regex)



probar expresiones regulares (4)

Problema

  1. Su expresión regular ''~^[AZ]~'' solo coincidirá con la primera letra mayúscula. Echa un vistazo a los Meta caracteres en la sintaxis de patrones para obtener más información.

  2. Su reemplazo es un carácter de nueva línea ''/n'' y no un espacio.

Solución

Usa este código:

$String = ''ThisWasCool''; $Words = preg_replace(''/(?<!/ )[A-Z]/'', '' $0'', $String);

La (?<!/ ) Es una assertion que se asegurará de que no agregue un espacio antes de una letra mayúscula que ya tiene un espacio delante de ella.

Tengo un número de cadenas que contienen palabras que están agrupadas y necesito separarlas.

Por ejemplo, ThisWasCool - Esto fue genial
MyHomeIsHere - Mi casa está aquí

Poco a poco me meto la cabeza en las expresiones regulares y creo que para hacer esto debería usar preg_replace. Mi problema es juntar la expresión para encontrar la coincidencia.

Solo he llegado hasta aquí

preg_replace(''~^[A-Z]~'', " ", $string)

Cada cadena contiene muchas palabras, pero SOLO la primera palabra contiene palabras agrupadas, por lo que usar mi ejemplo sobre una cadena sería
"ThisWasCool para visitarte de nuevo" - "This Was Cool para visitarte de nuevo"

Le he dicho que comience por el principio y busque mayúsculas, pero lo que no sé cómo hacer es restringirlo solo a la primera palabra de cada cadena, cómo reutilizar la letra mayúscula en la parte de reemplazo después del espacio


Aquí está mi .02c, esta versión solo actuará en la primera palabra y conservará secuencias de letras mayúsculas (BMW).

$str = "CheckOutMyBMW I bought it yesterday"; $parts = explode('' '', $str); $parts[0] = preg_replace(''~([a-z])([A-Z])~'', ''//1 //2'', $parts[0]); $newstr = implode('' '', $parts); echo $newstr;


No domino la expresión regular pero sugeriría algo como el siguiente código:

$string="ThisWasCool to visit you again"; $temp = explode('' '',$string, 2); $temp[0] = preg_replace(''/(.)([A-Z])/'',''$1 $2'', $temp[0]); $string = join('' '',$temp);

Mirando el código de SirLancelot tengo una segunda solución. Sin embargo, prefiero la solución de explosión ya que dijiste que tu objetivo es solo la primera palabra de la cadena.

$string="ThisWasCool to visit you again"; $temp = explode('' '',$string, 2); $temp[0] = preg_replace(''/(?<!^)([A-Z])/'','' $0'', $temp[0]); $string = join('' '',$temp);


$string = preg_replace(''/[A-Z]/'', '' $0'', $string);

Tal vez ejecutar el resultado a través de ltrim después.

$string = ltrim(preg_replace(''/[A-Z]/'', '' $0'', $string));