Je voudrais vérifier si une chaîne est une affaire de chameau ou non (Boolean). Je suis enclin à utiliser une regex mais toute autre solution élégante fonctionnerait. J'ai écrit une simple regex serait-ce correct? Ou est-ce que je manque quelque chose? P> Modifier strong> p> Je voudrais capturer des noms dans une collection de documents texte du format P> (?:[A-Z])(?:\S?)+(?:[A-Z])(?:[a-z])+
8 Réponses :
Vous voulez probablement quelque chose de plus comme: altho qui permettrait à toutes les capsules. Vous pouvez éviter cela avec: p> ancrez l'expression avec ^ code> et
$ code> ou
\ z code> si nécessaire. p> p>
Vous pouvez vérifier si une chaîne a à la fois supérieure et minuscule.
camel False camelCase True CamelCase True CAMELCASE False camelcase False Camelcase True Case True camel_case False
Sûrement cela ne fonctionne pas? Camelcase n'est pas valide et retournera vrai.
Cela dépend si vous voulez permettre aux acronymes. par exemple. décodergb code> ou
décodergb code>
Cela renvoie false pour _camelcase code>
Pourquoi est-ce la réponse acceptée? Ce n'est pas correct
Ne gère pas non plus le nombre de numériques ni de la ponctuation.
Devrait-il également être un chèque pour .isalnum () code>? Et aussi un chèque que la chaîne ne commence pas avec un numéro?
Je pense que vous pourriez vous échapper simplement avec juste vérifier que la chaîne a une capitale avec une lettre minuscule avant elle si (ligne = ~ m / [A-Z] [A-Z] /). Il suffit de vérifier que le bas et la majuscule échoue sur les exemples donnés. ~ BEN P>
J'ai modifié ma regex dans la question initiale.
sub_string= 'hiSantyWhereAreYou' `Change the string here and try` index=[x for x,y in enumerate(list(sub_string)) if(y.isupper())] `Finding the index of caps` camel_=[] temp=0 for m in index: camel_.append(sub_string[temp:m]) temp=m if(len(index)>0): camel_.append(sub_string[index[-1]::]) print('The individual camel case words are', camel_) `Output is in list` else: camel_.append(sub_string) print('The given string is not camel Case')
Pourriez-vous s'il vous plaît ajouter des explications sur comment i> et pourquoi i> votre code de code fournit une réponse à la question? Merci.
Convertissez votre chaîne en cas de chameau à l'aide d'une bibliothèque comme inflexion Code>
. Si cela ne change pas, cela devait déjà être un cas de chameau.
from inflection import camelize def is_camel_case(s): # return True for both 'CamelCase' and 'camelCase' return camelize(s) == s or camelize(s, False) == s
Si vous ne voulez pas de chaînes commençant par E. / code> en majuscule code> et camelcase code> pour passer
vrai code>. Modifier @ Réponse de William:
camel False
camelCase True
CamelCase True
CAMELCASE False
camelcase False
Camelcase False
Case False
camel_case False
Cette solution de regex a fonctionné pour mon étui d'utilisation ([A-Z] [A-Z \ S] +) ([A-Z] [A-Z] +) CODE> P> P>
est la pratique des phrases d'écriture sans espaces ni ponctuation, indiquant la séparation des mots avec un lettre de majuscule em> forte> p> blockQuote>
xxx pré>
- Recherchez la chaîne pour d'autres signes que Charactres et stocker dans
non_alpha code> li>
- remplacez em> tous les signes non_alpha avec espace vide et divisez-les par un espace vide pour créer
Substrings CODE> LI>
- Vérifiez que toutes les soustractions ne sont pas entièrement majuscules et sinon l'index de la majuscule ne peut pas être> 0 li> ol>
sortie fort> p>
xxx pré> p>
C'est une sorte de chose difficile à déterminer de manière programmative. Est
chameau code> cas de chameau? Qu'en est-il de
_camel code>,
chameau code>,
_camel code>,
constcamel code>,
html code> ou
var_camelcase code>? Il est assez difficile de définir à moins que vous sachiez à l'avance ce que le formatage est.
@Davidnehme Pas vraiment, je l'ai vérifié et mes exigences sont différentes /
@ SR2222 Que voulez-vous dire par formatage? Je cherche à capturer des noms comme McGauge, Lepierre, etc. dans un texte. J'espère que cela ajoute plus de contexte.
@mcenley, puis spécifie vos exigences?
@mcenley Qu'en est-il de O'Connor?
@Qtax La regex sur le lien ne traite pas d'une fonction booléenne de capture camelcase, mais plutôt un remplacement de camelcase à camel_case. Je me trompe peut-être ici si je n'ai pas compris la question sur le lien DUP correctement.
@AgF Oui, je voudrais capturer ceux-ci aussi. Aussi quelque chose comme "T.Mildred"
Donc, cela a moins à voir avec Camelcase et plus à voir avec l'identification des noms appropriés?
@ SR2222 AH, oui. L'hypothèse en cours de vérification de l'affaire Camel (avec d'autres "fonctionnalités") aiderait ma tâche.
Alors qu'est-ce qui ne va pas avec une jeton qui commence par une lettre majuscule et contient n autres personnages? Le seul véritable astuce consiste à éviter d'autres noms et mots appropriés au début des phrases qui ne sont pas des noms.
On pourrait capturer des cordes comme «l'article», etc. Vérification des noms de chameau à chameau offrirait de meilleures perspectives.
Mais un nom comme Bill Williams obtiendra par votre filtre ... Dans tous les cas, qu'en est-il de n'importe quel jeton commençant par une capitale et contenant une deuxième capitale non contiguë à la première?
@ SR2222 Yup, vous avez frappé le clou. La regex est-elle correcte?
Laissez-nous Continuer cette discussion en chat
Que diriez-vous d'exemples d'intrants que vous souhaitez échouer?