Как Вы читаете это регулярное выражение JavaScript?

На самом деле я отредактировал свой конфигурационный файл, который теперь выглядит следующим образом:

input {
. . .
}

filter {
 . . .
}

output{
    elasticsearch{
       hosts => "localhost:9200"
       index => "testindex"
    }

}

И теперь я могу получить данные изasticSearch, используя

curl 'localhost : 9200 / testindex / _search '

Я не знаю, как это работает, но сейчас это так. Кто-нибудь может объяснить, почему?

5
задан Wiktor Stribiżew 8 October 2019 в 23:38
поделиться

8 ответов

Это говорит, что Ваша строка содержит только 0... это должно начать, затем иметь 1 или более 0, затем закончиться.

10
ответ дан 18 December 2019 в 06:52
поделиться

$ ^0+

  • Утверждайте положение в начале строки «^\»
  • Соответствуйте символу “0” буквально «0 +»
    • Между одним и неограниченными временами, максимально много раз, отдавая по мере необходимости (жадный) «+»
  • Утверждайте положение в конце строки (или перед разрывом строки в конце строки, если таковые имеются) «$»
7
ответ дан 18 December 2019 в 06:52
поделиться

Если Вы хотите, чтобы это соответствовало Вашей строке, Вы хотите, чтобы Ваш regexp был чем-то как:

var pattern = /^0+.*0+$/

Это будет соответствовать 1 или более '0 вначале, 1 или более '0 в конце и 0 или больше из чего-либо в середине.

2
ответ дан 18 December 2019 в 06:52
поделиться

Шаблон по крайней мере одного 0, привязанный на обоих начало (^) и конец ($) строки; другими словами, строка состоит из одного или нескольких, обнуляет.

Соответствовать строке, состоящей из цифр от 0 до 9, и запускающейся и заканчивающейся по крайней мере одним нулем, шаблоном

/^0+[0-9]+0$/

работал бы, т.е. соответствовал бы, один или несколько обнуляет, затем одна или несколько цифр 0-9, заканчивающихся в нуле.

Если иначе не проинструктировано, JavaScript будет рассматривать всю строку как одну строку, игнорируя символы новой строки; чтобы вынудить это рассмотреть несколько отдельных строк, используйте m модификатор, например.

/regex/m

См. также: Обзор регулярного выражения JavaScript Центра разработки Mozilla

2
ответ дан 18 December 2019 в 06:52
поделиться

При ответе на обновление - Вы - вид права. Строка, которой regex попытается соответствовать, действительно имеет начало, середину и конец.

Но Вы знаете что? Все строки имеют начало и конец.

Ваш regex говорит, строка должна иметь начало, конец, и промежуточный эти два, только строка нулей.

Не думайте о Вашем 000000 как являющийся в запуске или Вашем 900000 как являющийся в конце. На самом деле проигнорируйте идею начать и конец на мгновение.

  • Этот regex соответствия "должен иметь некоторые нули в нем где-нибудь": /0+/
  • Этот regex соответствия "должен иметь некоторые нули в нем и ничто иное: /^0+$/

почему мы добавляем ^ и $?

Поскольку нет никакой regex нотации для "и ничто иное", таким образом, мы должны указать, "запускаются строки, некоторых нулей, конца строки", которая приходит к тому же самому.

Между прочим, Вы поняли это превратно также:

если существует шаблон одного или нескольких нулей вначале и конца, то возвратите тот шаблон

Ваш regex не возвратится, "который шаблон", он только возвратит true. Вам нужны скобки для овладения шаблоном: /^(0+)$/

1
ответ дан 18 December 2019 в 06:52
поделиться

@CodeCurious, Вы все еще делаете это более сложным, чем это должно быть. regex /^0+$/ просто означает, что вся строка состоит из одного или нескольких нулей. Regexes предлагают много возможностей для беспорядка, поэтому принимают простоту везде, где можно найти его.

1
ответ дан 18 December 2019 в 06:52
поделиться
/(^0+|0+$)/
0
ответ дан 18 December 2019 в 06:52
поделиться

Я всегда помещал своего Regex в человеческие слова, чтобы удостовериться, что это - то, что я имел в виду.

Это: $ ^0+

Читал бы следующим образом: "Если от запуска (^) моей строки, Вы находите по крайней мере один (+) нуль (0) и ничто иное до конца ($) строки".

Помните, regex является в основном набором операторов "If". Таким образом, сначала это должно быть "верно", и ЗАТЕМ это возвратит самый лучший результат. Regex никогда не будет возвращать "несколько истинное", или "главным образом истинный" результат.

0
ответ дан 18 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

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