Как разделить строку'', если'', не в рамках использования скобок Regex?

Я не знаю, какую ценность вы здесь передаете.

$today->month

Вместо этого $ сегодня-> месяц вы должны указать здесь точный месяц

Пожалуйста, попробуйте это

$indebted = DB::table('students')->where('students.active',1)   
            ->leftJoin('payments', 'students.id', '=', 'payments.user_id')
            ->whereMonth('payments.created_at','=', 06)
            ->get();
11
задан Alan Moore 10 July 2012 в 00:30
поделиться

6 ответов

In this case it's easier to split on the delimiters (commas) than to match the tokens (or chunks). Identifying the commas that are delimiters takes a relatively simple lookahead:

,(?=[^\]]*(?:\[|$))

Each time you find a comma, you do a lookahead for one of three things. If you find a closing square bracket first, the comma is inside a pair of brackets, so it's not a delimiter. If you find an opening bracket or the end of the line/string, it's a delimiter.

17
ответ дан 3 December 2019 в 03:05
поделиться
\[.*?\]

Забудьте о запятых, вы их не волнует. :)

6
ответ дан 3 December 2019 в 03:05
поделиться

Вариации этого вопроса уже обсуждались ранее.

Например:

Краткий ответ: Регулярные выражения, вероятно, не являются подходящим инструментом для этого. Напишите правильный парсер. Реализация FSM проста .

2
ответ дан 3 December 2019 в 03:05
поделиться
 (?<=,|^)\s*\[[^]]*\]\s*(?=,|$)

используйте разделители [ и ] в ваших интересах

2
ответ дан 3 December 2019 в 03:05
поделиться

You could either use a regular expression to match the values inside the brackets:

\[[^\]*]\]

Or you use this regular expression to split the bracket list (using look-around assertions):

(?<=]|^)\s*,\s*(?=\[|$)
1
ответ дан 3 December 2019 в 03:05
поделиться

Разве это не так просто?

(?<=,|^)(?:[^,]|\[[^[]*\])*
1
ответ дан 3 December 2019 в 03:05
поделиться
Другие вопросы по тегам:

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