J'ai besoin d'une expression régulière qui correspondra
0 code> - 9 code>, ( code>, ) code>, + code>, - < / code>, * code> et / code>. p>
9 Réponses :
[0-9\(\)\+\-\*\./\"]
Je pense que vous recherchez des classes de caractères ceci doit correspondre à un mot contenant n'importe quel nombre de 0 à 9 ou (,), +, -, / ou * P > p>
+ - * est une gamme non valide, mettez-la à la fin et il devrait fonctionner
Je pense que le - code> doit être le premier caractère, comme [- 0-9 () + * /] code>, non?
Oui, je pense que la solution est la classe des personnages, mais en réponse à Inshallah, ne devrait pas simplement s'échapper du '-' être suffisant? Ma compréhension est que, selon le système (qui dispose d'un guichet automatique non spécifié par OP), des caractères tels que ceux-ci peuvent avoir des significations particulières, en fait, afin que les crochets puissent être * et les supports. Je pense que OP ferait mieux de lire n'importe quelle documentation pour son système de regex particulier.
@Victor, mettant le - code> d'abord fonctionne aussi bien :-), je n'ai jamais su.
[\d\(\)\+\-\*\/\.]
Je ne pense pas que vous devez échapper (,), -, + etc. dans une classe de personnages. Cela dépend de la lanaguage ne le fait-il pas?
@Jass, à Perl au moins, vous avez raison. Vous devez prendre soin de prendre soin de vous que vous fassiez soit échapper au / code> ou écrivez le regex comme m ~ [\ d () + * / .-] ~.
La syntaxe d'évacuation dépend de la langue que vous utilisez.
Oui, nous échappons à la / là parce que la langue l'exige de manière à pouvoir identifier le / et le transmettre au moteur de regex au lieu de le manger. Comme si tu dis que l'utilisation de M ~~ est une solution de contournement .. :)
On dirait que vous essayez peut-être de faire correspondre des expressions numériques telles que 5 + 7-3.
Ceci devrait les faire correspondre: P>
([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)
Cette réponse n'intègre pas les crochets mentionnés dans la question. Et si vous avez une opération (2 + 3) * (5 / (7-1))?
De plus, cela dit incorrectement 25 * (53 + 5 code> est valide et 2 * (3) code> n'est pas. Si vous voulez essayer d'en trouver plus:
La réponse acceptée ne peut pas gérer beaucoup de cas de base.
Cela devrait faire le travail: explication: p> Nous voulons correspondre à la chaîne entière: p> expressions Peut avoir un signe: p> une expression est constitué de plusieurs chiffres ou une autre expression valide, entourée de crochets: p> Une expression valide peut être suivie d'une opération et d'une autre expression valide et est toujours une expression valide: p>
Comment utiliser \ g <1> en JavaScript? Je comprends que ceci est seulement avec PCRE Regex? Regex101.com/r/hdbu3e/2
@Hizmarck En effet, cela ne fonctionne que pour les moteurs PCRE Regex.
Si vous avez besoin d'une regex pour correspondre à une expression arithmétique comme celle-ci: 3 + 2-24 * 2 / 2-1 Vous pouvez essayer ceci:
String reg1="([0-9]+[\\+\\-\\*\\/]{1}[0-9]+)+([\\+\\-\\*\\/]{1}[0-9]+)*";
Je vous ai marqué de répondre aussi utile car cela m'a aidé dans mon travail. Toute la réponse ci-dessus n'a pas beaucoup aidé beaucoup. Merci.
Cette regex m'aide, prenez simplement une note ici peut-être que cela aide les autres.
Ceci fonctionne pour l'expression mathématique avec 4 décimales: Il est inspiré à la base de @ndnenkov Répondre. P> J'espère que cela peut être utile pour quelqu'un. < / p> p>
regex = '(?:[0-9 ()]+[*+/-])+[0-9 ()]+' string = 'mig 2*7 5+ 43 asf 4 3+32 *33 as 0 fa 3 5+9 m (3 + 5) - 9*(99)' re.findall(regex, string) # answer # [' 2*7 5+ 43 ', ' 4 3+32 *33 ', ' 3 5+9 ', ' (3 + 5) - 9*(99)']
Bien que ce code puisse résoudre le problème, une bonne réponse devrait également expliquer ce qu'elle fait et comment cela aide.
Utiliser PregG? Ereg? Quelle langue? Quel système?