Я пытаюсь извлечь информацию о каждом языке из файла * .rc файла MFC.Perl regex matching работает weired
Итак, я нашел «LANGUAGE LANG_([\s\S]*?)#endif(.*)\n/{1,}
» работаем для следующих текстов на http://regexpal.com/
:
LANGUAGE LANG_Language1, SUBLANG_XXX
#pragma code_page()
:
END
#endif // Language1 resources
/////////////////////////////////////////////////////////////////////////////
:
LANGUAGE LANG_Language2, SUBLANG_XXXX
#pragma code_page()
:
END
#endif // Language2 resources
/////////////////////////////////////////////////////////////////////////////
:
, а также, я программируюсь о регулярных выражениях найти через Perl, как это.
$rc_file = read_file($ARGV[0]);
@LANG = ($rc_file =~ /LANGUAGE LANG_([\s\S]*?)#endif(.*)\n\/{1,}/g);
и я ожидал получить каждый элемент элемента @LANG, например, следующие тексты.
LANGUAGE LANG_Language1, SUBLANG_XXX
#pragma code_page()
:
END
#endif // Language1 resources
/////////////////////////////////////////////////////////////////////////////
но, я получаю эти два типа. элементы с четными номерами, как это,
Language1, SUBLANG_XXX
#pragma code_page()
:
END
и нечетными номерами элементов, как это. // Язык1 ресурсы
Я не могу понять, что я использовал такое же регулярное выражение, но оно возвращается без какой-либо строки. Должен ли я обернуть regex другим форматом? или я делаю неправильно?
Вы пытались проверить, что находится в группах захвата $ 1 и $ 2? – AlfredoVR
Да. я задавался вопросом, почему возвращенный шаблон не содержит некоторых подстрок. –