Регулярное выражение Я хочу сопоставлять до определенных символов, но все еще могу сопоставлять строки, если в нем нет этих символов

1

во второй группе я хочу совместить слова, пока не встретит символ (или>. Но я все же хочу, чтобы он соответствовал словам, даже если у него нет этих символов, как в строках 3 и 4. Я использую Python.

Изображение 174551

  • 0
    Вы затрудняете, чтобы помочь вам. Почему бы не опубликовать образец текста и регулярное выражение в виде простого текста , чтобы мы могли легче копировать и опробовать его?
  • 0
    Спасибо за подсказку и спасибо, блинсинг за ответ.
Теги:

3 ответа

2
Лучший ответ

Вы можете совместить конец строки в чередовании:

.*(#\d*\,?\d+)\s.*in\s(.*?)\s*(?=[(>]|$)

Демо: https://regex101.com/r/BliHlU/1

1

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

r'.*(#\d*\,?\d+)\s+in\s+([^(>]*)'

>>> for test in tests:
    print(re.findall(r'.*(#\d*\,?\d+)\s+in\s+([^(>]*)', test))

[('#26,968', 'Office Products ')]
[('#13,452', 'Industrial & Scientific ')]
[('#99,999', 'baby')]
[('#888', 'office supplies')]
  • 0
    Это соответствует всей последней строке на веб-сайте, но, очевидно, работает в программировании на Python. В любом случае спасибо. На это ответили.
  • 0
    @ timmyt123 тогда твоя проблема не очень хорошо определена.
0

Это может быть не лучший образец и может ловить гораздо больше, но если предоставленный образец является хорошей выборкой данных, у меня есть другой пример:

r"([#\d,]+) in ([\w\s&]+)>?([\w\s&]*)([()\w\s\d]*)"

https://regex101.com/r/hKD6AX/2

Надеюсь это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню