Я хочу разбить строку, используя регулярные выражения , но столкнулся с некоторой проблемой. У меня есть эта строка:
$text=" one two three";
Затем я пытаюсь разбить его на буквенные слова:
#@words=split(" ", $text); #1 this works
@words=split("[^a-zA-Z]", $text); #2 this doesn't work
for $word (@words){
printf "word: |$word|\n";
}
Так что прокомментированный метод ( 1 ) работает нормально. Как и следовало ожидать, я напечатан:
word: |one|
word: |two|
word: |three|
Однако со вторым методом ( 2 ) я получаю это:
word: ||
word: |one|
word: |two|
word: |three|
Так что, хотя логически второй метод должен быть эквивалентен первому, на практике он не ведет себя так же. Почему это?