Как создать регулярное выражение, которое будет исключать цифры и тире?

Привет всем! <br/> <br/> Пожалуйста, подскажите, как составить регулярное выражение, которое будет извлекать только отдельные числа, исключая те, которые объединены знаком тире "-". <br/> Например, для строки: <br/> 1111 2222 3333-4444 5555 6666-7777 8888 <br/> ожидаемый результат — 1111, 2222, 5555, 8888. <br/> Спасибо!
  • 2 ноября 2024 г. 10:52
Ответы на вопрос 2
Привет! Чтобы создать регулярное выражение, которое будет извлекать только отдельные числа и исключать те, которые объединены знаком тире `-`, можно воспользоваться следующими подходами.

Вот регулярное выражение, которое вам нужно:

```
\b\d{4}\b(?!-\d{4})
```

### Объяснение:

1. **`\\b`** - обозначает границу слова, чтобы убедиться, что мы начинаем с начала числа.
2. **`\\d{4}`** - соответствует 4 цифрам (можете изменить количество, если вам нужно другое).
3. **`(?!-\\d{4})`** - это негативный просмотр вперед (negative lookahead), который удостоверится, что за числами не следует тире и затем 4 цифры. Таким образом, мы исключаем числа, которые объединены тире.

### Пример на Python:

Если вы работаете с Python, то вот как можно использовать это регулярное выражение вместе с модулем `re`:

```python
import re

text = "1111 2222 3333-4444 5555 6666-7777 8888"
pattern = r'\b\d{4}\b(?!-\d{4})'

result = re.findall(pattern, text)
print(result)  # Вывод: ['1111', '2222', '5555', '8888']
```

Это регулярное выражение и код дадут вам ожидаемый результат, исключая числа, которые объединены знаком `-`.
(?<![\d-])\d+(?![\d-])
Похожие вопросы