Разделители ^ и $ проверяют слишком строгие [дубликаты]

Новое в 2014 году:

Особенно, если вы также заинтересованы в манипулировании данными в целом (включая сортировку, фильтрацию, подмножество, подведение итогов и т. д.), вам обязательно нужно взглянуть на dplyr, который поставляется с множеством функций, которые предназначены для облегчения вашей работы с кадрами данных и некоторыми другими типами баз данных. Он даже предлагает довольно сложный SQL-интерфейс и даже функцию для преобразования (большинства) SQL-кода непосредственно в R.

. Четыре функции, связанные с соединением в пакете dplyr, (цитата):

  • inner_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x, где в y есть соответствующие значения, а все столбцы из x и y
  • left_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x и все столбцы от x и y
  • semi_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x, где в y есть соответствующие значения, сохраняя только столбцы из x.
  • anti_join(x, y, by = NULL, copy = FALSE, ...): вернуть все строки из x, где в y нет совпадающих значений, сохраняя только столбцы из x

Здесь все здесь

Выбор столбцов может выполняться с помощью select(df,"column"). Если для вас недостаточно SQL-ish, то есть функция sql(), в которую вы можете ввести код SQL как есть, и он будет выполнять указанную вами операцию так же, как вы писали в R все время (для получения дополнительной информации , обратитесь к dplyr / database vignette ). Например, если применить правильно, sql("SELECT * FROM hflights") выберет все столбцы из таблицы dplyr «hflights» («tbl»).

1
задан Alan Moore 31 March 2014 в 12:44
поделиться

1 ответ

Вы не даете достаточно подробностей. Поскольку ваше первое выражение работает, я предполагаю, что вы используете режим Singleline.

Следующее мое предположение состоит в том, что эта строка является частью большей строки.

^ соответствует начало строки по умолчанию

$ по умолчанию соответствует концу строки.

Теперь, поскольку ваша строка содержит материал до и после, вам нужно изменить это поведение по умолчанию:

С модификатором Multiline, ^ соответствует началу строки, а $ - концу строки. Дополнительную информацию см. В документации .

Итак, ваше регулярное выражение должно выглядеть примерно так:

Regex regx = new Regex("(?<=^(\s*Owner))(.|\n)*?(?=\s*Information$)", RegexOptions.Singleline | RegexOptions.Multiline);
4
ответ дан Liath 21 August 2018 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: