Как я могу преобразовать регулярное выражение Perl для работы с Boost :: Regex? - PullRequest
3 голосов
/ 29 марта 2010

Что такое Boost :: Regex эквивалент этого регулярного выражения Perl для слов, заканчивающихся на ing или ed или en?

/ing$|ed$|en$/

...

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

Самое важное отличие состоит в том, что регулярные выражения в C ++ являются строками, поэтому все специфические для регулярных выражений последовательности обратной косой черты (такие как \w и \d должны быть заключены в двойные кавычки ("\\w" и "\\d")

2 голосов
/ 29 марта 2010
/^[\.:\,()\'\`-]/

должно стать

"^[.:,()'`-]"

Специального ограничителя регулярных выражений Perl / в C ++ не существует, поэтому регулярные выражения являются просто строкой. В этих строках вы должны позаботиться о том, чтобы корректно избежать обратной косой черты (\\ на каждые \ в исходном регулярном выражении). Однако в вашем примере все эти обратные слеши были ненужными, поэтому я полностью их отбросил.

Есть другие предостережения; Насколько мне известно, некоторые возможности Perl (например, просмотр с изменяемой длиной) не существуют в библиотеке Boost. Так что может быть невозможно просто перевести любое регулярное выражение. Ваши примеры должны быть хорошими, хотя. Хотя некоторые из них странные. .*[0-9].* будет соответствовать любой строке, которая где-то содержит число, а не all numbers.

...