Réponses:
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 le mot stop mais suivies d'un espace ou de tout autre caractère autre qu'un mot que vous pouvez utiliser (votre saveur regex le permet)
^stop\W
D'un autre côté, ce qui suit correspond à un mot au début d'une chaîne sur la plupart des saveurs de regex (dans ces saveurs \ w correspond à l'opposé de \ W)
^\w
Si votre saveur n'a pas le raccourci \ w, vous pouvez utiliser
^[a-zA-Z0-9]+
Méfiez-vous que ce deuxième idiome ne correspondra qu'à des lettres et à des chiffres, aucun symbole.
Consultez votre manuel de saveur regex pour savoir quels raccourcis sont autorisés et à quoi correspondent-ils exactement (et comment traitent-ils avec Unicode.)
^stop\b
, qui permettrait n'importe quelle limite, y compris la fin de la ligne
Essaye ça:
/^stop.*$/
Explication:
Si vous souhaitez que cet arrêt soit suivi d'un espace, vous pouvez modifier le RegEx comme suit:
/^stop\s+.*$/
Remarque: gardez également à l'esprit que le RegEx ci-dessus exige que le mot d'arrêt soit suivi d'un espace! Il ne correspondrait donc pas à une ligne contenant uniquement: stop
Si vous voulez faire correspondre quoi que ce soit après un arrêt de mot et non seulement au début de la ligne, vous pouvez utiliser: \bstop.*\b
- mot suivi d'une ligne
Ou si vous voulez faire correspondre le mot dans la chaîne, utilisez \bstop[a-zA-Z]*
- seuls les mots commençant par stop
Ou le début des lignes avec arrêt ^stop[a-zA-Z]*
pour le mot seulement - premier mot seulement
La ligne entière ^stop.*
- première ligne de la chaîne uniquement
Et si vous voulez faire correspondre toutes les chaînes commençant par stop, y compris les nouvelles lignes, utilisez: /^stop.*/s
- chaîne multiligne commençant par stop
Comme l'a dit @SharadHolani. Cela ne correspondra pas à tous les mots commençant par " arrêter "
. Seulement si c'est au début d'une ligne comme " stop going ". @Waxo a donné la bonne réponse:
Celui - ci est un peu mieux, si vous voulez faire correspondre un mot commençant par « arrêt » et ne contenant que des lettres de A à Z .
\bstop[a-zA-Z]*\b
Cela correspondrait à tout
arrêter (1)
arrêter au hasard (2)
d'arrêt (3)
veux 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)
/stop([a-zA-Z])+/
Correspond à n'importe quel mot d'arrêt (arrêt, arrêt, arrêt, etc.)
Cependant, si vous voulez simplement faire correspondre "stop" au début d'une chaîne
/^stop/
fera: D
Si vous voulez faire correspondre tout ce qui commence par «arrêter», y compris «arrêter», «arrêter» et «arrêter», utilisez:
^stop
Si vous voulez faire correspondre le mot stop suivi de quelque chose comme dans "stop going", "stop this", mais pas "stop" et pas "stop", utilisez:
^stop\W
Je déconseille une approche d'expression régulière simple à ce problème. Il y a trop de mots qui sont des sous-chaînes d'autres mots sans rapport, et vous vous rendrez probablement fou en essayant de suradapter les solutions plus simples déjà fournies.
Vous aurez besoin d'au moins un algorithme de dérivation naïf (essayez le radical Porter; il existe du 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 par espace. 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, arrêtez-les également.
L'étape suivante serait de trouver les indices de tableau qui correspondent à votre liste de mots «stop» radicaux. Supprimez-les du tableau non traité, puis rejoignez-les sur des 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 PNL, vous voudrez peut-être faire des recherches sur les erreurs clbuttic .
Si vous voulez que le mot commence par "stop", vous pouvez utiliser le modèle suivant. "^ arrêtez. *"
Cela correspondra aux mots commençant par stop suivi de n'importe quoi.
"^stop"
?
code
String line = "stopped";
String pattern = "^stop";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
System.out.println(m.find( )); //prints true
System.out.println(line.matches(pattern)); //prints false