У меня следующая ошибка, и я хотел бы извлечь идентификатор с помощью регулярного выражения. Я знаю, как это сделать только для чисел, но я не уверен, как это сделать для буквенно-цифрового идентификатора:

Error: GraphQL error: Fetch failure: HTTP 500 'Internal Server Error' for
https://localhost:3000:  Unhandled command [https://localhost:3000.AddTag]
in [https://localhost:3000.AccountEntity] 
with id [7f4cd122-4f1e-53bb-8501-68fc525bb1cd]

Я просто хочу извлечь 7f4cd122-4f1e-53bb-8501-68fc525bb1cd после слов «with id»

0
Jav 4 Май 2021 в 03:03

2 ответа

Лучший ответ
/with id \[([\d\w]{8}(?:-[\d\w]{4}){3}-[\d\w]{12})\]/

Это захватит в первую группу захвата любой "id", который соответствует xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где x может быть из диапазонов: 0–9 или a – z

Пояснение:

with id \[  # find "with id ["
( # start first group
[\d\w] # either number or letter
{8} # 8 times
- # match "-"
(?:-[\d\w]{4}){3} # 3 times -[\dw]{4}
- # match "-"
[\d\w]{12} # 12 times [\d\w]
) # finish group 1
\] # match closing "]"

Если в ваших идентификаторах нет неподвижных тире или если вам все равно, где тире

/with id \[([\d\w-]+?)\]/

Чтобы получить первую группу захвата с помощью javascript, вы используете

let match = /regex/.exec(string);
let group1 = match[1];
let string = `Error: GraphQL error: Fetch failure: HTTP 500 'Internal Server Error' for
https://localhost:3000:  Unhandled command [https://localhost:3000.AddTag]
in [https://localhost:3000.AccountEntity] 
with id [7f4cd122-4f1e-53bb-8501-68fc525bb1cd]`;
let match = /with id \[([\d\w-]+?)\]/.exec(string);
let group1 = match[1];

console.log("Found:", group1);

let match2 = /\[([\d\w]{8}(?:-[\d\w]{4}){3}-[\d\w]{12})\]/.exec(string);
let second1 = match2[1];

console.log("Found:", second1);
1
SkillGG 4 Май 2021 в 00:44

Регулярное выражение id \[([\d\w-]*)\] должно делать то, что вам нужно. В качестве полезных ресурсов вы можете использовать regex101.com.

Регулярное выражение ищет необработанный текст «id [», за которым следует любое количество символов слова, цифр и дефисов, которые заканчиваются на «]». Все это фиксируется в группе регулярных выражений, поэтому вы можете извлечь фактический идентификатор.

В качестве альтернативы без групп регулярных выражений вы можете: (?<=id \[)([\d\w-]*)(?=])

2
H. Pope 4 Май 2021 в 00:21