2016-09-28 2 views
-4

Как совместить отрицательное число в строке.соответствие отрицательного числа в строке не работает

 
input line :strongest_signal_indication Invalid {-1} some text 

Я пытался это выражение регулярного выражения:

/ ([+-]?\d+)| (\s+ (\{ [^-]+ \} |\S+)) /xg 

, но он не работает для меня

Любой помощи, пожалуйста,

+1

вам нужно просто подобрать это число ли? Есть ли другие цифры на линии? Для того, чтобы соответствовать (возможно отрицательное) число в строке вам нужно только 'мой ($ Num) = $ ул = ~/([+ -]? \ D +) /', поэтому, пожалуйста, объяснить немного больше – zdim

+0

@zdim мне нужно pickup единственный (-1) номер во всем вхождении в файл – sam

+0

OK. Тогда то, что я написал в предыдущем комментарии, - это все, что вам нужно. Он находит и фиксирует число и сохраняет его в '$ num', учитывая, что' $ str' содержит строку. Это, что строка не содержит числа, то '$ num' завершает' undef'. Для целого файла вы можете читать его по строкам и использовать выше, чтобы '$ str' имел строку, когда вы идете. Какая часть этого является проблемой? Можете ли вы опубликовать полный код, который вы пытаетесь? – zdim

ответ

2

Вашего шаблона на самом деле делает матч.

$ perl -E' 
    say 
     "Invalid {-1}" =~/([+-]?\d+)| (\s+ (\{ [^-]+ \} |\S+)) /x 
     ? "match" : "no match";' 
match 

В самом деле, / [+-]? \d+ /x хватило бы.

Смежные вопросы