2012-06-23 3 views
0

Я хочу, чтобы он обнаруживал целые числа положительные и отрицательные, но я хочу, чтобы он не включал минус, если он используется для вычитания.Написание регулярного выражения для идентификации целых чисел

Ex

  • "29 --24 + 4" должен вернуть 29, -24 и 4

  • "29 -24 + 4" должен вернуть 29, 24 и, наконец, 4

В настоящее время я использую это выражение "([0-9] * -)? [0-9] +", который проверяет, является ли символ после минуса не числом. Затем я могу найти фактическое число с другим регулярным выражением. Проблема с приведенной выше заключается в том, что она не работает, если мой номер находится в начале строки. Как «-4 + 2». Это будет выводить 4 и 2.

EDIT: язык ActionScript 3.

+0

так использовать две части в ваше регулярное выражение - один для первой цифры и один для остальных. –

+0

Для тестирования вы можете использовать этот инструмент, http://the-regex-coach.en.softonic.com/. Это очень полезно для проб и ошибок. – chaosguru

+0

На каком языке вы используете? Что может быть между цифрами? – Kobi

ответ

0

Один из способов, используя perl аромат regexp:

Содержание script.pl:

use warnings; 
use strict; 

while (<DATA>) { 
    chomp; 
    printf qq|%s = |, $_; 
    printf qq|%s |, $1 while m/(-?\d+)\s*(?:-|\+|$)/g; 
    print qq|\n|; 
} 

__DATA__ 
29 --24 + 4 
29 -24 + 4 
-4 + 2 

Run это нравится:

perl script.pl 

С следующим выводом:

29 --24 + 4 = 29 -24 4 
29 -24 + 4 = 29 24 4 
-4 + 2 = -4 2 
0

Actionscript:

var pattern:RegExp = new RegExp("([+-]?\d+)","ig"); 
var element:Array = ut.match(pattern); 
Смежные вопросы