Как я могу найти любой номер после определенных слов в Perl - PullRequest
1 голос
/ 12 декабря 2011
Changeset: 40042
User: xyz
Date: Friday, July 29, 2011 9:54:52 PM

Комментарий:

[I # 1326920] RINS Ведение справочных данных Разработка завершена.Добавлены RINDefinition, RINEquivalence и RINObligati

Предметы:

edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/application/common/ICTSDatabaseObjectMaps.java
edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/application/client/controller/MainController.java
edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/control/common/AdminCache.java
edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/control/common/AdminManager.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/_RINDefinition.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/_RINEquivalence.java


Changeset: 40043
User: xyzx
Date: Friday, July 29, 2011 9:54:52 PM

Комментарий:

[I # 1326920] Поддержка обслуживания справочных данных RINS завершена.Добавлены RINDefinition, RINEquivalence и RINObligati

Элементы:

add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/_RINObligation.java
edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/Commodity.java
edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/CommodityType.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/RINDefinition.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/RINEquivalence.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/RINObligation.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/maps/RINDefinitionMap.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/maps/RINDefinitionMap.xml
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/maps/RINEquivalenceMap.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/maps/RINEquivalenceMap.xml
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/maps/RINObligationMap.java
add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/maps/RINObligationMap.xml
edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/trade/TradeLocalizedResources.java

Примечания по регистрации:

Code Reviewer:
Performance Reviewer:
Security Reviewer:

Вышеуказанные строки находятся в одном массиве.Я хочу читать его построчно, и если какая-либо строка содержит Changeset:, тогда получите номер рядом с Changeset: Пожалуйста, предложите мне, как это сделать.

Заранее спасибо.

Код из комментария ОП:

foreach(@loginfo){
    #print "$_\n";
    @rev = $_=~/^C(\d{1,})/g;
    #print "....@rev\n";
    push(@rev_value,@rev);
    print @rev_value,"\n";
}

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Если у вас есть все строки в массиве, вы можете использовать map

use v5.10;
my @lines = map /^Changeset:\s*(\d+)/g, @array;
say for @lines;

Также работает, если вы замените массив дескриптором файла, например <$fh> (или любой список, в этом отношении).

1 голос
/ 12 декабря 2011

просто используйте regexp - man perlre

foreach my $l(@lines) {
    if ($l =~ /Changeset:\s+?(\d+)/) {
         print "$1\n";
    }
}

EDIT:

$input = <<EOL;
  edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/application/common/ICTSDatabaseObjectMaps.java
  edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/application/client/controller/MainController.java
  edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/control/common/AdminCache.java
  edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/control/common/AdminManager.java
  add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/_RINDefinition.java
  add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/_RINEquivalence.java
`Changeset: 40043`
  edit $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/apps/admin/control/common/AdminCache.java

`Changeset: 4294967295`
  add  $/S/B/F_RINS/Java/V3/ICTS/src/com/tradecapture/icts/model/commoditymarket/_RINEquivalence.java

`Changeset: 42949672951289312789398123987123`
EOL
foreach my $l(split(/\n/,$input)) {
    if ($l =~ /Changeset:\s+?(\d+)/) {
         print "number $1\n";
    }
}

выходы

number 40043
number 4294967295
number 42949672951289312789398123987123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...