При использовании параметров в данных JSON POST в Jmeter изменяется другая сущность json [duplicate]

Возможно, стоит отметить, что это также может произойти, когда Windows блокирует загрузки, которые он считает небезопасными. Это можно устранить, щелкнув правой кнопкой мыши файл jar (например, ojdbc7.jar) и проверив поле «Unblock» внизу.

Диалоговое окно свойств файла JAR для Windows: Windows JAR File Properties Dialog [/g0]

317
задан Mechanical snail 2 October 2011 в 09:03
поделиться

8 ответов

Какими персонажами вы должны и которые вы не должны убежать, действительно зависит от того, с чем вы работаете.

Для PCRE и большинства других так называемых Perl-совместимых ароматов избегайте этих внешних классы символов:

.^$*+?()[{\|

и эти внутренние классы символов:

^-]\

Для POSIX расширенных регулярных выражений (ERE), избегайте этих внешних классов символов (таких же, как PCRE):

.^$*+?()[{\|

Выключение любых других символов является ошибкой с POSIX ERE.

Внутри классов символов обратная косая черта является буквальным символом в регулярных выражениях POSIX. Вы не можете использовать его, чтобы избежать чего-либо. Вы должны использовать «умное размещение», если хотите включить метасимволы класса символов в виде литералов. Поместите ^ в любом месте, кроме как в начале, в начале, а в начале или в конце класса символов, чтобы соответствовать этим буквально, например:

[]^-]

В основных регулярных выражениях POSIX (BRE), это метасимволы, которые вам нужно убежать, чтобы подавить их смысл:

.^$*

Выпуски из круглых скобок и фигурных скобок в BRE дают им особый смысл, который их неописуемые версии имеют в ERE. Некоторые реализации (например, GNU) также придают особое значение другим символам при экранировании, например \? и +. Сброс символа, отличного от. ^ $ * () {}, Как правило, является ошибкой с BRE.

Внутри классов символов BRE следуют тому же правилу, что и ERE.

Если все это делает голова спина, возьмите копию RegexBuddy . На вкладке «Создать» нажмите «Вставить маркер», а затем «Литерал». RegexBuddy добавит экраны при необходимости.

302
ответ дан Jan Goyvaerts 20 August 2018 в 13:12
поделиться
  • 1
    Мне кажется, вы забыли «/», который также нужно избегать вне класса. – jackthehipster 14 January 2015 в 09:23
  • 2
    / не является метасимволом в любом из ароматов регулярного выражения, о котором я упоминал, поэтому синтаксис регулярных выражений не требует его ускорения. Когда регулярное выражение цитируется как литерал на языке программирования, тогда правила форматирования строки или регулярного выражения этого языка могут потребовать экранирования / или " или ' и могут даже потребовать `\` вдвойне сбежал. – Jan Goyvaerts 7 February 2015 в 00:39
  • 3
    как насчет двоеточия, & quot;: & quot ;? Должна ли она скрываться внутри классов персонажей, а также снаружи? ru.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions говорит, что «PCRE имеет последовательные правила экранирования: любой неабсолютно-буквенный символ может быть экранирован, чтобы обозначить его буквальное значение [...] & quot; – nicolallias 22 May 2015 в 14:05
  • 4
    – Jan Goyvaerts 9 June 2015 в 07:52
  • 5
    Для не-POSIX ERE (тот, который я использую чаще всего, потому что это то, что реализовано Tcl), избегая других вещей, не генерирует ошибок. – slebetman 21 August 2015 в 04:47

Modern RegEx Flavors (PCRE)

Включает C, C ++, Delphi, EditPad, Java, JavaScript, Perl, PHP (preg), PostgreSQL, PowerGREP, PowerShell, Python, REALbasic, Real Studio, Ruby , TCL, VB.Net, VBScript, wxWidgets, XML Schema, Xojo, XRegExp.PCRE совместимость может различаться

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Anywhere: . ^ $ * + - ? ( ) [ ] { } \ |


Legacy RegEx Flavors (BRE / ERE)

Включает поддержку awk, ed, egrep, emacs, GNUlib, grep, PHP (ereg), MySQL, Oracle, R, sed.PCRE версии или с помощью расширений

ERE / awk / egrep / emacs

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Вне класса символов: . ^ $ * + ? ( ) [ { } \ | & nbsp; & nbsp; & nbsp; & nbsp; Внутри класса символов: ^ - [ ]

BRE / ed / grep / sed

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; внутри класса символов: ^ - [ ] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; g16]


Примечания

  • Если неуверенность a bout с определенным символом, он может быть экранирован как \xFF
  • Буквенно-цифровые символы не могут быть экранированы с помощью обратного слэша
  • Произвольные символы могут быть экранированы с помощью обратного слэша в PCRE, но не BRE / ERE (при необходимости их нужно избегать). Для PCRE ] - требуется только экранирование в классе символов, но я сохранил их в одном списке для простоты
  • . Цитированные строки выражения также должны иметь экранированные символы пробега, а часто с обратной косой чертой удвоились ( как "(\")(/)(\\.)" по сравнению с /(")(\/)(\.)/ в JavaScript)
  • . Помимо экранов, различные реализации регулярных выражений могут поддерживать различные модификаторы, классы символов, якоря, кванторы и другие функции. Для получения дополнительной информации посмотрите regular-expressions.info или используйте regex101.com , чтобы проверить свои выражения в реальном времени
41
ответ дан Beejor 20 August 2018 в 13:12
поделиться
  • 1
    В вашем ответе есть много ошибок, включая, но не ограничиваясь: ни один из ваших «современных» для флейворов требуются - или ] для экранирования вне классов символов. POSIX (BRE / ERE) не имеет escape-символа внутри классов символов. Реджейный вкус в RTL Delphi на самом деле основан на PCRE. Python, Ruby и XML имеют свои собственные вкусы, которые ближе к PCRE, чем к POSIX. – Jan Goyvaerts 23 February 2017 в 09:05
  • 2
    @JanGoyvaerts Спасибо за исправление. Вы упомянули о вкусах, которые ближе к PCRE. Что касается побегов, я сохранил их таким образом для простоты; легче запомнить, чтобы убежать повсюду, чем несколько исключений. Властные пользователи будут знать, что происходит, если они хотят избежать нескольких обратных косых черт. Во всяком случае, я обновил свой ответ несколькими разъяснениями, которые, надеюсь, затронут некоторые из этих вещей. – Beejor 7 March 2017 в 04:15

Действительно, нет. существует около полумиллиона различных синтаксисов регулярных выражений; они, похоже, доходят до Perl, EMACS / GNU и AT & amp; T в целом, но я всегда удивляюсь.

2
ответ дан Charlie Martin 20 August 2018 в 13:12
поделиться

К сожалению, значение таких вещей, как (и \ (меняются между регулярными выражениями стиля Emacs и большинством других стилей). Поэтому, если вы попытаетесь избежать этого, вы можете делать противоположное тому, что вы хотите.

Итак, вам действительно нужно знать, какой стиль вы пытаетесь процитировать.

3
ответ дан Darron 20 August 2018 в 13:12
поделиться

К сожалению, на самом деле нет установленного набора escape-кодов, поскольку он зависит от языка, который вы используете.

Однако сохранение страницы, такой как Страница регулярных выражений ] или этот Regular Cheatsheet может пройти долгий путь, чтобы помочь вам быстро отфильтровать информацию.

20
ответ дан Dillie-O 20 August 2018 в 13:12
поделиться
  • 1
    Обширный лист Addedbytes сильно упрощен и имеет некоторые вопиющие ошибки. Например, он говорит, что \< и \> являются границами слов, что истинно только (AFAIK) в библиотеке регулярных выражений Boost. Но в другом месте он говорит, что < и > являются метасимволами и должны быть экранированы (до \< и \>), чтобы соответствовать им буквально, что не соответствует ни одному из вкусов – Alan Moore 7 March 2017 в 06:00

POSIX распознает множество вариантов регулярных выражений - основных регулярных выражений (BRE) и расширенных регулярных выражений (ERE). И даже тогда есть причуды из-за исторических реализаций утилит, стандартизированных POSIX.

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

Зайдите в книгу Джеффа Фридля , посвященной регулярным выражениям .

4
ответ дан Jonathan Leffler 20 August 2018 в 13:12
поделиться

Иногда с помощью персонажей, которые вы указали, возможно простое экранирование. Например, использование обратной косой черты для выхода из скобки не будет работать в левой части строки подстановки в sed, а именно

sed -e 's/foo\(bar/something_else/'

. Я просто использую простое определение класса символов вместо , поэтому вышеприведенное выражение становится

sed -e 's/foo[(]bar/something_else/'

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

BTW Классы символов являются довольно ванильными элементами регулярного выражения, поэтому они, как правило, работают в большинстве ситуаций, когда вы нужны экранированные символы в регулярных выражениях.

Изменить: после комментария ниже, просто подумал, что я бы упомянул о том, что вам также нужно учитывать разницу между автоматами конечного состояния и автоматами не конечного состояния при просмотре поведение оценки regexp.

Возможно, вам захочется взглянуть на «блестящую книгу с шаром», а также на эффективную Perl ( санированную ссылку Amazon ), в частности главу о регулярных выражениях, чтобы получить почувствуйте тогда разницу в типах оценки двигателя regexp.

Не все в мире PCRE!

В любом случае, регулярные выражения настолько неуклюжи по сравнению с SNOBOL ! Теперь это был интересный курс программирования! Наряду с тем, что на Simula .

Ах, радости изучения в UNSW в конце 70-х! (-:

3
ответ дан vaxquis 20 August 2018 в 13:12
поделиться
  • 1
    «sed» - это команда, для которой plain '(' не является особенной, но '\ (' является особенной, в отличие от PCRE меняет смысл, поэтому '(' is special, но '\ (' is not. ОП спрашивает. – Jonathan Leffler 30 December 2008 в 09:43
  • 2
    sed - это утилита * nix, которая использует один из самых примитивных наборов оценки regexp. PCRE не входит в ситуацию, которую я описываю, поскольку она включает в себя другой класс (в) конечных автоматов с тем, как он оценивает регулярные выражения. Я думаю, что мое предложение о минимальном наборе синтаксиса regexp по-прежнему сохраняется. – Rob Wells 31 December 2008 в 02:32
  • 3
    В POSIX-совместимой системе sed использует POSIX BRE, который я рассказываю в своем ответе. Версия GNU на современной Linux-системе использует POSIX BRE с несколькими расширениями. – Jan Goyvaerts 31 December 2008 в 08:30

Для PHP, «всегда безопасно предшествовать не-буквенно-цифровому с« \ », чтобы указать, что он обозначает себя». - http://php.net/manual/en/regexp.reference.escape.php .

За исключением случаев, когда это «или».: /

Чтобы избежать переменных шаблона регулярных выражений (или частичных переменных) в PHP, используйте preg_quote ()

1
ответ дан zylstra 20 August 2018 в 13:12
поделиться
Другие вопросы по тегам:

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