регулярное выражение, которое будет ловить 2 слова в строке

Я смог решить проблему, обновив до версии 65 или 66. По словам сопровождающего этого PPA, эта проблема связана с чем-то, что, вероятно, отсутствует в версии 64.

0
задан 31 January 2018 в 18:01

3 ответа

String to catch:

must-c046-was001-ix.1.oca.best.net

Regex (форма PCRE):

/must-[a-z0-9-.]+best[a-z.]+/

Объяснение регулярного выражения здесь поможет его расшифровать.

Он найдет строку с «must-» в начале, за которой следует по крайней мере одна строчная буква, число, тире или точка; затем «лучше», за которым следует хотя бы одна буква или точка. Я бы использовал параметр «g» в конце нормально, но если вы используете некоторые системы, которые не будут работать, например, объяснение regex здесь не включает эту опцию, но включает в себя, например, i "(как последний символ после косой черты, чтобы сделать совпадение нечувствительным к регистру.

3
ответ дан 22 May 2018 в 15:11
  • 1
    один вопрос, я пытаюсь заставить его работать в iptables, но не помогает, можете ли вы помочь? правило: iptables -t nat -A PREROUTING -m string -string "/ must- [a-z0-9 - \.] + best [a-z \.] + / g" --algo regex -p tcp -m tcp --dport 230 -j DNAT - в пункт назначения 5.5.5.5: 32 – Vitalik Jimbei 31 January 2018 в 19:12
  • 2
    я не могу добавить правило выше, если я использую другой алгоритм, например, kmp или bm регулярное выражение не вступает в силу – Vitalik Jimbei 31 January 2018 в 19:12
  • 3
    ИМО вы всегда должны ставить свою цель, а не [только] подцель. iptables не работают, как обычно, вам нужен установленный модуль ядра kpcre (например, kpcre ), но я не думаю, что они по умолчанию, а не в Ubuntu. Мое регулярное выражение находится в формате PCRE, поэтому, возможно, попробуйте " - algo pcre " , как в этой ссылке Wiki. Вы можете использовать Wireshark для захвата пакетов, а затем выполнить статический анализ, чтобы проверить соответствие регулярного выражения. Я вижу, что вам нужно вырезать «глобальный». вариант, поскольку это не в kpcre, ответ исправлен. – pbhj 1 February 2018 в 00:41
  • 4
    Похож, / A - близкий kpcre эквивалент / g; в основном, как только он будет соответствовать, он не будет искать больше совпадений, что, вероятно, является тем, что вы делаете быстрее. – pbhj 1 February 2018 в 00:50
  • 5
    мне удалось установить kpre, но все равно не поймать строки по регулярному выражению – Vitalik Jimbei 1 February 2018 в 12:20

String to catch:

must-c046-was001-ix.1.oca.best.net

Regex (форма PCRE):

/must-[a-z0-9-.]+best[a-z.]+/

Объяснение регулярного выражения здесь поможет его расшифровать.

Он найдет строку с «must-» в начале, за которой следует по крайней мере одна строчная буква, число, тире или точка; затем «лучше», за которым следует хотя бы одна буква или точка. Я бы использовал параметр «g» в конце нормально, но если вы используете некоторые системы, которые не будут работать, например, объяснение regex здесь не включает эту опцию, но включает в себя, например, i "(как последний символ после косой черты, чтобы сделать совпадение нечувствительным к регистру.

3
ответ дан 17 July 2018 в 21:50

String to catch:

must-c046-was001-ix.1.oca.best.net

Regex (форма PCRE):

/must-[a-z0-9-.]+best[a-z.]+/

Объяснение регулярного выражения здесь поможет его расшифровать.

Он найдет строку с «must-» в начале, за которой следует по крайней мере одна строчная буква, число, тире или точка; затем «лучше», за которым следует хотя бы одна буква или точка. Я бы использовал параметр «g» в конце нормально, но если вы используете некоторые системы, которые не будут работать, например, объяснение regex здесь не включает эту опцию, но включает в себя, например, i "(как последний символ после косой черты, чтобы сделать совпадение нечувствительным к регистру.

3
ответ дан 23 July 2018 в 22:27

Другие вопросы по тегам:

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