Я использую RegEx для ответа на вызов API, но в настоящее время он слишком «жадный» и в конечном итоге соответствует всем типам ответов. Биты RegEx необходимы, поскольку фактические идентификаторы в ответе будут отличаться каждый раз.RegEx для буквенно-символьного символа 15 символов в JSON
регулярное выражение утверждение заключается в следующем:
{data:\[{"name":"Mat","~id":"(.*)"},{"name":"Laurie","~id":"(.*)"}\]},"something":true}
Что соответствует этому правильный ответ:
{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"}]},"something":true}
, а также это неправильный ответ:
{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"},{"name":"John","~id":"4fd5ec146fc2ee0fff234237"},{"name":"Paul","~id":"4fd5ec146fc2ee0fff234238"},{"name":"George","~id":"4fd5ec146fc2ee0fff234239"}]},"something":true}
Второй (.*)
не только совпадающий с идентификатором второго элемента, но он соответствует ID и всего остального нежелательных объектов.
Так что, я думаю, мне нужно сделать мой RegEx немного более строгим, когда дело доходит до полей ~id
. Поскольку идентификаторы всегда будут содержать 24 шестнадцатеричных символа, я хотел бы заменить (.*)
на что-то более подходящее.
- Я пишу это в Go, и поэтому с помощью RegExp пакета Гоу.
- И я использую http://regexpal.com/ для проверки RegEx
Попробуйте добавить? в таких наборах: '(. *?)' – TylerH4
Спасибо Тайлеру, но он все еще слишком жаден. –
пытается использовать '\ S +'? или сделать что-то вроде этого: '[\ w \ d] +'? – gaussblurinc