Я пытаюсь написать регулярное выражение для php preg_split, чтобы захватить определенные «заголовки», как слова в текстовой области обработки im.
Я хочу использовать полученный массив, чтобы улучшить форматирование для пользователя и создать упорядоченный вид в постах обзора.
$returnValue = preg_split('/[^|\n]*[\t| ]*\b(Pro|Contra|Conclusion)\b\:[\t| ]*/i',
$data['review_text'],
-1,
PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
Это мой пример ввода текста
Intro line one, first part of the array
Pro:Pro:double Pro 1, no space between
Pro: Pro:double Pro 2, space between
Pro: test Pro:double Pro 3, characters between
Pro:
Pro:double Pro 4, linebreak betweem, should create an empty pro entry
Contra:
Conclusion: the last Contra was empty
Conclusion: this Contra: in this row should not match!
Conclusion: Test with spaces between Conclusion and :
Conclusion: this Conclusion was prefixed by a space
Conclusion: this Conclusion was prefixed by a Tab
Conclusion: this Conclusion was prefixed by two Tabs a space between
Conclusion : this Conclusion has a space between Conclusion and :a final line with multiple line breaks in between, should be part of the last conclusion fragment
Результат должен состоять из [0] в качестве вводной строки, 4 результатов Pro (с их разделителями), 1 Contra (пусто) и 7 результатов Заключения (с их разделителями). Единственный Contra должен быть пустым, а последняя строка должна быть частью последнего Заключения
Я пытаюсь подобрать что-то подобное
В этом порядке
Прежде всего, [^|\n]*
означает 0 или более символов, которые не являются конвейером |
или разрыв строки.
[\t| ]*
означает 0 или более символов, которые не являются табуляцией или каналом |
или пространство.
Я думаю, вы хотите:
/\s*\b(Pro|Contra|Conclusion):[\t ]*/i
С помощью @ M42 я смог найти правильный путь …
'/\n[\t ]*\b(Pro|Contra|Conclusion)[\t ]*:[\t ]*/i'
Отсутствует только «Начало файла вместо новой строки», это делает почти то, что я хотел (все еще тестирую, чтобы убедиться). Прямо сейчас я добавляю «\ r \ n» перед строкой, которая удаляется позже, когда я обрезаю () фрагменты строки.
Полный вызов PHP выглядит следующим образом
$returnValue = preg_split('/\n[\t ]*\b(Pro|Contra|Conclusion)[\t ]*:[\t ]*/i', $data['review_text'], -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
На всякий случай, если вам интересно, почему я использовал Fazit вместо Заключения в ответе на M42, я пишу код для немецкого веб-приложения, поэтому мне приходится переводить каждую копию&вставьте в StackOverflow. (ಠ_ಠ)