Вы можете использовать следующее regex
((?:\w+-)+\w+)
(?:\w+-)+
: Соответствует одному или нескольким буквенно-цифровым символам, включая символ подчеркивания, а затем дефис. (?:
не добавит в захваченную группу \w+
: соответствует одному или нескольким буквенно-цифровым символам, включая символ подчеркивания ()
: группа захвата. Доступ к совпадениям можно получить с помощью $n
, где n
- номер группы захвата. $1
в этом случае, поскольку это первая группа захвата. g
: использовать глобальный флаг для получения всех возможных совпадений Демо
var string = "time to eval-u-ate Lorem ipsum dolor sit amet, consectetur adipisicing elit. A sed, illum veritatis aut recusandae tempora possimus iure totam distinctio necessitatibus temporibus labore-numquam-dignissimos, officiis velit error-dolores nostrum ipsam.";
var matches = string.match(/((?:\w+-)+\w+)/g);
document.write('' + JSON.stringify(matches, 0, 4) + '
');
Google V8 JavaScript Engine записан в C++ и использует SCons, таким образом, я предполагаю, что это - одно голосование за него.
CMake? (генерирует make-файлы, так технически не замена как таковая).
я также видел" SCons" всплывающее окно в нескольких местах недавно. Ничего не создали с ним самостоятельно все же.
Смотрите на waf.
я думаю, что можно полагать, что это как полная замена для делает и автоинструменты. Это основано на Python. Одна вещь мне нравится приблизительно WAF, состоит в том, что сам сценарий WAF ~100kb автономный, который Вы помещаете в свой корневой каталог проекта. Это должно по контрасту сделать или обстрелять и друзья, где система сборки должна быть установлена сначала. У Вас действительно должен быть Python> =2.3 установленных все же.
~$ ./waf configure && ./waf && ./waf install
эквивалент WAF Make-файлам является wscript файлом. Это - WAF сценария Python чтения, и это определяет по крайней мере 3 функции: set_options()
, configure(conf)
и build(bld)
. Можно предположить то, что делает каждый из них.
Для придания импульса я рекомендую смотреть в demos/cpp /* файлы в исходном распределении. Также смотрите на документ / waf.pdf файл; это - документ на 12 страниц, который быстро разбудит Вас и выполнение.
Поскольку сравнение скорости различного C++ создает инструменты, можно взглянуть на этот сравнительный тест: http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml
Мы используем Затор для сложного проекта C++ - одно преимущество - то, что это является приятно кросс-платформенным. Вместо меня струя от преимуществ, просто имейте беглый взгляд на эту ссылку: http://www.perforce.com/jam/jam.html
Noel Llopis написал несколько статей, сравнивающих системы сборки. Часть 1 "Quest для Идеальной Системы сборки" в http://gamesfromwithin.com/the-quest-for-the-perfect-build-system . Часть 2 следует тот же сайт. О повторной попытке Scons сообщают в http://gamesfromwithin.com/?p=104 .
Заключения: SCons является слишком медленным... Затор является победителем.
Повар является другим инструментом, который может использоваться для замены, делают. Я видел, что несколько крупных компаний используют его. Так, это - предприятие, готовое даже при том, что веб-сайт выглядит скорее датированным.
У меня есть использование SCons на раке ++ проект (и на Linux и на Windows), и это работает действительно хорошо.
scons all -j8
(который компилирует объектные файлы параллельно) очень прохладно!
Я использую bakefile для моего процесса сборки, и я стал большим поклонником!
я никогда не должен писать Make-файл сам больше, уже не говоря об ужасных сценариях автоинструментов GNU. Все, что я должен сделать, обеспечивают XML
файл, который описывает цели сборки. Bakefile может преобразовать это в Make-файл, который добирается весь (заголовочный файл) право зависимостей и т.д., где различные форматы Make-файла могут быть выбраны (вставка списка из документации):
available formats are:
autoconf GNU autoconf Makefile.in files
borland Borland C/C++ makefiles
dmars Digital Mars makefiles
dmars_smake Digital Mars makefiles for SMAKE
gnu GNU toolchain makefiles (Unix)
mingw MinGW makefiles (mingw32-make)
msevc4prj MS eMbedded Visual C++ 4 project files
msvc MS Visual C++ nmake makefiles
msvc6prj MS Visual C++ 6.0 project files
msvs2003prj MS Visual Studio 2003 project files
msvs2005prj MS Visual Studio 2005 project files
symbian Symbian development files
watcom OpenWatcom makefiles
xcode2 Xcode 2.4 project files
я обычно использую опция autoconf , и она пишет раздражающие сценарии автоинструментов GNU для меня. Я действительно должен был адаптироваться configure.ac
сценарий, так, чтобы настроили, находит определенную библиотеку по любой системе. Но это не было слишком плохо. Получение autoconf сценариев таким образом хорошо, потому что я не должен писать им всем один, и когда я распределю свой проект, будет выглядеть, как будто я записал им, и пользователи могут все еще разработать мой проект данным Богом способом, с
./configure && make && make install