Как искать контент, но пропустить то, что находится в квадратных скобках?

Порядок аргументов, которые вы передаете в метод connect, неверен, он ожидает, что mapStateToProps первым и mapDispatchToProps будут вторым параметром. Таким образом, ваш код должен быть export default connect(mapStateToProps, mapDispatchToProps)(LoginComponent);

Вот подпись

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
0
задан GMB 31 March 2019 в 17:27
поделиться

1 ответ

Для вашего предложения WHERE возможны несколько решений, в зависимости от ваших данных.

Вариант 1: просто пропустить записи, содержимое которых содержит квадратные скобки

post_content LIKE '%"%' AND post_content NOT LIKE '%[%'

Вариант 2: если у вас есть смешанное содержимое полей с двойными кавычками и внутри квадратных скобок, решение состоит в том, чтобы удалить что-либо внутри квадратных скобок перед поиском двойной кавычки

REGEXP_REPLACE(txt, '\\[[^\\]]*\\]', '') LIKE '%"%'

Регулярное выражение означает: открывающая скобка, за которой следуют символы от O до N, отличные от закрывающей скобки, а затем закрывающая скобка.

Вариант 3: функция полностью идентична варианту 2, но с использованием REGEXP_REPLACE с немного более сложным регулярным выражением:

REGEXP_LIKE(txt, '(^|\\])[^\\[\\]]*"')

Для более старых версий MySQL (< 8.0.4) это можно написать:

txt REGEXP '(^|[[.right-square-bracket.]])[^[.left-square-bracket.][.right-square-bracket.]]*"'

db <> fiddle здесь

 WITH tests as (
     SELECT '[columns="4"]' txt
     UNION SELECT 'abc"db'
     UNION SELECT 'abc"db[columns="4"]'
     UNION SELECT '[columns="4"]abc"db'
     UNION SELECT '[columns="4"]abc"db[columns="4"]'
 )
 SELECT 
     txt, 
     txt NOT LIKE '%[%', 
     REGEXP_REPLACE(txt, '\\[[^\\]]*\\]', '') LIKE '%"%',
     REGEXP_LIKE(txt, '(^|\\])[^\\[\\]]*"')
 FROM tests

 txt                              | txt NOT LIKE '%[%' | REGEXP_REPLACE(txt, '\[[^\]]\]', '') LIKE '%"%'    | REGEXP_LIKE(txt, '(^|\])[^\[\]]"')
 :------------------------------- | -----------------: | --------------------------------------------------: | -------------------------------------:
 [columns="4"]                    |                  0 |                                                   0 |                                      0
 abc"db                           |                  1 |                                                   1 |                                      1
 abc"db[columns="4"]              |                  0 |                                                   1 |                                      1
 [columns="4"]abc"db              |                  0 |                                                   1 |                                      1
 [columns="4"]abc"db[columns="4"] |                  0 |                                                   1 |                                      1
 

0
ответ дан GMB 31 March 2019 в 17:27
поделиться
Другие вопросы по тегам:

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