Musisz dopasować BSC0 do BSC10 i „TOTAL”. Ale poniższy warunek odpowiada tylko BSC1 i BSC10. Czego brakuje? próbowałem z s/regex/
m/regex/
wariacje również
$currentRowHeader
będzie zawierać pojedyncze słowo bez spacji
if ($currentRowHeader =~ /BSC[0-10]|TOTAL/) { print "OK"}
Odpowiedzi:
8 dla odpowiedzi № 1[...]
jest postać klasa. Może pasować tylko do jednej postaci. Wyrażenia regularne nie mają pojęć liczbowych - tylko znaki cyfrowe. To, co mówi twoje wyrażenie regularne
Dopasuj postać z
0
do1
(to jest0
lub1
) lub dopasuj a0
.
Więc pasuje tylko do jednej cyfry binarnej. Możesz użyć
if ($currentRowHeader =~ /BSC(?:[0-9]|10)|TOTAL/) { print "OK" }
Zauważ, że ?:
nie jest konieczne, ale jest dobrym nawykiem, ponieważ tłumi niepotrzebne przechwytywanie a zatem przyspiesza operację.
2 dla odpowiedzi nr 2
Myślnik w klasie postaci to zakres postacie, nie wartości. Spróbuj tego:
if ($currentRowHeader =~ /BSC(10|d)|TOTAL/)
FYI d
oznacza „dowolną cyfrę” i jest identyczny (ze znakami łacińskimi) z kodowaniem [0-9]
, ale krótszy i łatwiejszy do odczytania.
Jak powiedzą ci niektórzy pedanci, d
zawiera liczby niełacińskie, takie jak arabskie i chińskie symbole liczb, ale jest to wyraźnie nieistotne w kontekście tego pytania.