#python #regex
#python #регулярное выражение
Вопрос:
Я создаю регулярное выражение на Python, где мне нужно найти пробелы в строке
Пример
000#0123456789#ASimpleName#123456 000#987654321#OtherSimpleName#8765432
000#0123456789#ASimpleName#EUA 000#987654321#OtherSimpleName#8765432
В этом случае, если я использую re.split('s'
) Я решаю свою проблему, но я могу найти это
000#0123456789#A simple Name#123456 000#987654321#Other Simple Name#8765432
000#0123456789#ASimpleName#EUA 000#987654321#OtherSimpleName#8765432
Я пытался использовать это выражение [d|w]sd
, но регулярное выражение получает 6 0
и A 0
, но мне нужно только пустое пространство.
Комментарии:
1. Попробуйте
s (?=000#)
илиs (?=d{3}#)
2. Спасибо, чувак, ты спас меня!
3. Итак, я хотел бы понять ваше регулярное выражение. В этом случае, как я могу прочитать выражение ?=? Я знаю, что используя круглые скобки после сигнала plus, вы находите строку, но игнорируете их, верно?
4. Это поисковые системы, которые не требуют использования, т. Е. не добавляют соответствующий текст ко всему сопоставленному значению и не перемещают индекс регулярного выражения, индекс регулярного выражения всегда остается там, где он был до сопоставления шаблона поиска.
5. @FailSafe Если вы упомянули «сложность», то вам следует предложить
" "
. Однако это не поможет, потому что имя может содержать пробелы, см.Other Simple Name
Ответ №1:
Вы можете использовать следующее регулярное выражение с re.split
:
s (?=000#)
Или, если там могут быть любые 3 цифры:
s (?=d{3}#)
Смотрите демонстрацию регулярных выражений и https://jex.im/regulex диаграммы:
Подробные сведения
s
— сопоставляет и использует 1 или более символов пробела(?=d{3}#)
— гарантирует, что сразу справа от текущего местоположения есть 3 цифры, за которыми следует#
.(?=000#)
возвращает true, только если три цифры являются нулями.#
здесь может быть необязательно, но это зависит от фактических данных и требований.