Как я могу найти подстроку в строке с помощью Perl?

IIUC нужно groupby + transform, тогда мы делаем строки max и idxmax

s=df.groupby(df.columns.tolist())[['Hwin','Awin','Draw']].transform('sum')
df.loc[s.max(1).groupby(df.Match).idxmax()]
    Match  Hwin  Awin  Draw
0  A Vs B     1     0     0
5  C Vs D     0     1     0
9
задан brian d foy 8 December 2008 в 06:05
поделиться

4 ответа

необходимо получить его:

while ($pattern =~/(string(100|\d{1,2}))/g) {
    print $1;
}

Объяснение:

  • круглые скобки получают то, что находится в них в 1$. Если у Вас есть больше чем один набор parens, 1-х получений в 1$, 2-го в 2$ и т.д. В этом случае 2$ будут иметь фактическое число.
  • \d {1,2} получает между 1 и 3 цифрами, позволяя Вам получить между 0 и 99. Дополнительные 100 там позволяют Вам получать 100 явно, так как это - единственное 3-разрядное число, которому Вы хотите соответствовать.

править: зафиксированный порядок чисел, которые получены.

13
ответ дан 4 December 2019 в 13:50
поделиться

Abc.pl:

#!/usr/bin/perl -w    
while(<>) {
    while (/(string(\d{1,3}))/g) {      
    print "$1\n" if $2 <= 100;
    } 
}

Пример:

$ cat Abc.txt 
This is string1 this is string
This is string11 
This is string6 and it is in this line
string1 asdfa string2
string101 string3 string100 string1000
string9999 string001 string0001

$ perl Abc.pl Abc.txt
string1
string11
string6
string1
string2
string3
string100
string100
string001
string000

$ perl -nE"say $1 while /(string(?:100|\d{1,2}(?!\d)))/g" Abc.txt
string1
string11
string6
string1
string2
string3
string100
string100

Отметьте различие между выводами. То, что предпочтительно, зависит от Ваших потребностей.

5
ответ дан 4 December 2019 в 13:50
поделиться

Не чрезмерно определять. Для получения числовой части просто используйте (\d +). Это получит много любых длин, так, чтобы однажды, когда обезьяны, которые предоставляют Вам этот файл, решают развернуть свой диапазон до 999, Вы были застрахованы. Это также меньше думало, и теперь когда Вы пишете, и позже когда Вы поддерживаете.

Будьте строги в том, что Вы испускаете, но быть либеральным в том, что Вы принимаете.

-1
ответ дан 4 December 2019 в 13:50
поделиться

Просто измените $pattern печати для печати $ и, который уже получен.

-2
ответ дан 4 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: