9
votes

Expression régulière pour correspondre à des chiffres et aux opérateurs de base des mathématiques

J'ai besoin d'une expression régulière qui correspondra 0 - 9 , (, ) , + , - < / code>, * et / .


1 commentaires

Utiliser PregG? Ereg? Quelle langue? Quel système?


9 Réponses :


1
votes
[0-9\(\)\+\-\*\./\"]

0 commentaires

7
votes

Je pense que vous recherchez des classes de caractères xxx

ceci doit correspondre à un mot contenant n'importe quel nombre de 0 à 9 ou (,), +, -, / ou *


4 commentaires

+ - * est une gamme non valide, mettez-la à la fin et il devrait fonctionner


Je pense que le - doit être le premier caractère, comme [- 0-9 () + * /] , 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 - d'abord fonctionne aussi bien :-), je n'ai jamais su.



7
votes
[\d\(\)\+\-\*\/\.]

4 commentaires

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 / 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 .. :)



13
votes

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]+)


2 commentaires

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 est valide et 2 * (3) n'est pas. Si vous voulez essayer d'en trouver plus: jsfiddle.net/a7eg9a78



17
votes

La réponse acceptée ne peut pas gérer beaucoup de cas de base. Cela devrait faire le travail: xxx

explication:

Nous voulons correspondre à la chaîne entière: xxx

expressions Peut avoir un signe: xxx

une expression est constitué de plusieurs chiffres ou une autre expression valide, entourée de crochets: xxx

Une expression valide peut être suivie d'une opération et d'une autre expression valide et est toujours une expression valide: xxx


2 commentaires

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.



3
votes

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]+)*";


1 commentaires

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.



1
votes

Cette regex m'aide, prenez simplement une note ici peut-être que cela aide les autres. XXX


0 commentaires

0
votes

Ceci fonctionne pour l'expression mathématique avec 4 décimales: xxx

Il est inspiré à la base de @ndnenkov Répondre.

J'espère que cela peut être utile pour quelqu'un. < / p>


0 commentaires

1
votes
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)'] 

1 commentaires

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.