Как вы токенизируете / токенизируете / разбиваете строку с разделителями в Perl? - PullRequest
13 голосов
/ 18 марта 2009

Как вы разделяете строку, например «a: b: c: d» в токены для анализа в Perl?

(например, с использованием split?)

Прежде всего, ищите четкий, простой ответ (но добавьте интересные кусочки информации потом).

Ответы [ 4 ]

13 голосов
/ 18 марта 2009

Да, split - это то, что вы хотите.

@tokens = split(/:/, "a:b:c:d");
foreach my $token (@tokens) {
    ....
}
9 голосов
/ 18 марта 2009

Вы можете использовать сплит. Вы также можете использовать его с регулярным выражением.


my @tokens = split(/:/,$string);

Для более сложного анализа я рекомендую Parse :: RecDescent

4 голосов
/ 19 марта 2009

Также взгляните на документацию, которая поставляется с perl, набрав в командной строке:

perldoc -f split

Для поиска часто задаваемых вопросов используйте

perldoc -q split
3 голосов
/ 18 марта 2009

если у вас есть:

$a = "a:b:c:d";
@b = split /:/, $a;

тогда вы получите:

@b = ("a", "b", "c", "d")

В общем, вот как работает сплит:

split /PATTERN/,EXPR

Где PATTERN может быть в значительной степени регулярным выражением. Вы не ограничены простыми токенами вроде ':'

...