Я пытаюсь определить, имеет ли строка число, основанное на нескольких условиях. Например, я не хочу совпадать с числом, если оно заключено в круглые скобки, и я использую для этого предвидение и заглядывание, но у меня возникают проблемы, когда число содержит несколько цифр. Кроме того, число может быть между текстом без разделителей пробелов.
Мое регулярное выражение:
(? https://regex101.com/r/RnTSMJ/1
Примеры примеров: {2}: НЕ должно совпадать. // мое регулярное выражение работает
{34: не должно совпадать. // мое регулярное выражение соответствует 4 в {34
45}: не должно совпадать. // мое регулярное выражение соответствует 4 в {45
{123}: НЕ ДОЛЖНО совпадать. // Мое регулярное выражение соответствует 2 в {123}
Я посмотрел на Регулярное выражение. Совпадение целых слов , но этот подход не работает для меня. Если я использую границы слов, вышеупомянутые случаи работают, как и ожидалось, но в таких случаях, как приведенные ниже, нет, когда числа заключены в текст. Я также хочу добавить некоторые дополнительные логи c, например, не совпадают с указанными c строки типа 1st, 2nd, et c или # 1, # 2, et c
обновленное регулярное выражение:
(?<!\[|\{|\(|#)(\b\d+\b)(?!\]|\}|\|st|nd|rd|th)
См. здесь https://regex101.com/r/DhE3K4/4
123abd // должно соответствовать 123
abc345 // должно соответствовать 234
ab2123cd // должно соответствовать 2123
Возможно ли это с чистым регулярным выражением или мне нужно что-то мо всеобъемлющий?