Cómo encontrar una palabra que comienza con un carácter específico

Quiero ordenar las palabras que comienzan con ‘s’ en oraciones con python.
Aquí está mi código:

import re text = "I was searching my source to make a big desk yesterday." m = re.findall(r'[s]\w+', text) print m 

Pero el resultado del código es:

 ['searching', 'source', 'sk', 'sterday']. 

¿Cómo escribo un código sobre expresión regular? O, ¿hay algún método para ordenar las palabras?

 >>> import re >>> text = "I was searching my source to make a big desk yesterday." >>> re.findall(r'\bs\w+', text) ['searching', 'source'] 

Para el uso de minúsculas y mayúsculas: r'\b[sS]\w+'

Sé que no es una solución de startswith regulares, pero puede usar startswith

 >>> text="I was searching my source to make a big desk yesterday." >>> [ t for t in text.split() if t.startswith('s') ] ['searching', 'source'] >>> 
  1. Si desea hacer coincidir un solo carácter, no necesita colocarlo en una clase de caracteres, por lo que s es lo mismo que [s] .

  2. Lo que quieres encontrar es un límite de palabra . Un límite de palabra \b es un ancla que coincide con un cambio de un carácter que no es de palabra ( \W ) a un carácter de palabra ( \w ) o viceversa.

La solucion es:

 \bs\w+ 

esta expresión regular coincidirá en una s con ningún carácter de palabra antes (funciona también al comienzo de la cadena) y necesita al menos un carácter de palabra después de ella. \w+ coincide con todos los caracteres de palabras que puede encontrar, por lo que no hay necesidad de una \b al final.

Véalo aquí en Regexr

Probé esta muestra de código y creo que hace exactamente lo que quieres:

 import re text = "I was searching my source to make a big desk yesterday." m = re.findall (r'\b[s]\w+', text) print (m) 

Me gustaría añadir una pequeña cosa aquí,

Digamos que tienes una línea para encontrar palabras que comienza con ‘s’

line = “alguien debería mostrar algo a some@gmail.com

si escribe expresiones regulares como, swords = re.findall (r “\ b [sS] \ w +”, línea)

la salida será, [‘alguien’, ‘debería’, ‘mostrar’, ‘algo’, ‘algo’]

Pero si modifica la expresión regular a,

usa \ S en lugar de \ w

espadas = re.findall (r “\ b [sS] \ S +”, línea)

la salida será, [‘alguien’, ‘debería’, ‘mostrar’, ‘algo’, ‘some@gmail.com’]