web-dev-qa-db-fra.com

Expression régulière pour faire correspondre la chaîne commençant par "stop"

Comment créer une expression régulière pour faire correspondre un mot au début d'une chaîne. Nous cherchons à faire correspondre stop au début d'une chaîne et tout peut suivre.

Par exemple, l'expression doit correspondre à:

stop
stop random
stopping

Merci.

74
Sean

Si vous souhaitez faire correspondre uniquement les lignes commençant par stop use

^stop

Si vous souhaitez faire correspondre les lignes commençant par le mot stop suivi d'un espace

^stop\s

Ou, si vous souhaitez faire correspondre les lignes commençant par la fin de Word mais suivies d'un espace ou de tout autre caractère que vous ne pouvez pas utiliser (votre style le permettant, si vous le souhaitez)

^stop\W

D'autre part, ce qui suit correspond à un mot au début d'une chaîne de la plupart des goûts de regex (dans ces goûts, w correspond à l'opposé de\W).

^\w

Si votre version ne comporte pas le raccourci\w, vous pouvez utiliser

^[a-zA-Z0-9]+

Méfiez-vous que ce second idiome ne fera que correspondre à des lettres et des chiffres, aucun symbole.

Consultez le manuel de votre style regex pour savoir quels raccourcis sont autorisés et en quoi ils correspondent (et comment traitent-ils l’Unicode)?

148
Vinko Vrsalovic

Essaye ça:

/^stop.*$/

Explication:

  • /Les charachters délimitent l’expression régulière
  • ^ signifie correspondance au début de la ligne
  • . suivi de * signifie que tout caractère (.) ou nombre de fois (*)
  • $ signifie jusqu'à la fin de la ligne

Si vous souhaitez que cet arrêt soit suivi d'un espace, vous pouvez modifier le RegEx comme suit:

/^stop\s+.*$/
  • \s signifie n'importe quel caractère d'espacement
  • + après le\s signifie qu'il doit y avoir au moins un caractère d'espacement après le mot d'arrêt

Remarque: Gardez également à l'esprit que le RegEx ci-dessus nécessite que le mot d'arrêt soit suivi d'un espace! Donc, cela ne correspond pas à une ligne qui ne contient que: stop

60
Mike Dinescu

Si vous souhaitez faire correspondre quoi que ce soit après un mot, arrêtez non seulement au début de la ligne, vous pouvez utiliser: \bstop.*\b - Word suivi de ligne

 Word till the end of string

Ou si vous souhaitez faire correspondre le mot de la chaîne, utilisez \bstop[a-zA-Z]* - uniquement les mots commençant par stop

 Only the words starting with stop

Ou le début des lignes avec stop ^stop[a-zA-Z]* pour le mot uniquement - premier mot uniquement
Toute la ligne ^stop.* - première ligne de la chaîne uniquement

Et si vous voulez faire correspondre chaque chaîne commençant par stop, y compris les nouvelles lignes, utilisez: /^stop.*/s - chaîne multiligne commençant par stop

16
Waxo

Comme @SharadHolani a dit. Cela ne correspondra pas à tous les mots commençant par " stop "

. Seulement si c'est au début d'une ligne du type " arrêtez d'aller " . @ Waxo a donné la bonne réponse:

Celui-ci estlégèrementpréférable, si vous souhaitez faire correspondre tout mot commençant par " stop " et ne contenant que des lettres deA à Z.

\bstop[a-zA-Z]*\b

Cela correspond à tous

arrêter (1)

stop random (2)

arrêt (3)

vouloir arrêter (4)

s'il vous plaît arrêtez (5)

Mais 

/^stop[a-zA-Z]*/

correspondrait seulement (1) jusqu'à (3), mais pas (4) et (5)

13
Sedat Kilinc
/stop([a-zA-Z])+/

Correspondra à n'importe quel mot d'arrêt (stop, stop, stoping, etc.)

Cependant, si vous voulez juste faire correspondre "stop" au début d'une chaîne

/^stop/

va faire: D

6
Mez

Si vous voulez faire correspondre tout ce qui commence par "stop", y compris "stop going", "stop" et "stopping", utilisez:

^stop

Si vous voulez faire correspondre le Word stop suivi de quoi que ce soit comme dans "Arrêtez", "Arrêtez ça", mais pas "Arrêté" et pas "Arrêté" utilisez:

^stop\W
6
Alex B

Je déconseillerais une approche simple de l'expression régulière à ce problème. Il y a trop de mots qui sont des sous-chaînes d'autres mots sans rapport, et vous allez probablement vous rendre fou en essayant de suradapter les solutions plus simples déjà fournies.

Vous aurez besoin d'au moins un algorithme de création de racine naïve (essayez le modèle Porter, il existe un code gratuit dans la plupart des langues) pour traiter le texte en premier. Conservez ce texte traité et le texte prétraité dans deux tableaux séparés. Assurez-vous que chaque caractère non alphabétique obtient également son propre index dans ce tableau. Quelle que soit la liste de mots que vous filtrez, supprimez-les également. 

La prochaine étape consisterait à trouver les indices de tableau qui correspondent à votre liste de mots "arrêtés". Supprimez ceux-ci du tableau non traité, puis rejoignez les espaces.

Ce n'est que légèrement plus compliqué, mais ce sera une approche beaucoup plus fiable. Si vous avez des doutes sur la valeur d'une approche plus orientée vers la PNL, vous pouvez effectuer des recherches sur les erreurs critiques .

0
Robert Elwell

Si vous voulez que le mot commence par "stop", vous pouvez utiliser le modèle suivant. "^ stop. *"

Cela correspondra aux mots commençant par stop suivi de rien.

0
Manisha Chaurasia