У меня есть строка, в которой разные предопределенные ключевые слова вводят разные данные. Есть ли способ сделать это, используя умное использование регулярных выражений, или что-то? Вот пример:
Ключевые слова могут быть "first name: "
и "last name: "
. Теперь хочу разобрать:
"character first name: Han last name: Solo"
в
{ "first name: " => "Han ", "last name: " => "Solo" }
Конечно, порядок ключевых слов во входной строке не является фиксированным. Это также должно работать на:
"character last name: Solo first name: Han"
Я понимаю, что есть проблемы с пробелами и так далее. Я буду игнорировать их здесь.
Я знаю, как решить эту проблему с разными ключевыми словами, но я не нахожу это очень симпатичным.
Сплит почти отвечает всем требованиям. Единственная проблема заключается в том, что он возвращает массив, а не хеш, поэтому я не знаю, какое имя или фамилия.
Мой пример несколько вводит в заблуждение. Вот еще один:
my @keywords = ("marker 1", "marker 2", "marker 3");
my $rawString = "beginning marker 1 one un marker 2 two deux marker 3 three trois and the rest";
my %result;
# <grind result>
print Dumper(\%result);
напечатает:
$VAR1 = {
'marker 2' => ' two deux ',
'marker 3' => ' three trois and the rest',
'marker 1' => ' one un '
};