Regex # 1
См. Здесь используемое регулярное выражение
(?<=\b\d)\b
Заменить на ,
Как это работает:
(?<=(?:)\d)
положительный просмотр назад, гарантирующий следующее: \b
утверждение позиции как границы слова \d
соответствие di git
\b
заявить позицию как границу слова
Чтобы предотвратить совпадение мест, подобных 3, a
, просто добавьте (?!,)
к регулярному выражению.
Regex # 2
Чтобы предотвратить сопоставление одного di git в начале и конце строки, вы можете использовать следующее регулярное выражение:
См. Используемое регулярное выражение здесь
(?<=(?<!^)\b\d)\b(?!$)
То же, что и выше, регулярное выражение, но добавляет следующее:
(?<!^)
гарантирует, что граница слова \b
, которая предшествует, не соответствует началу строки (?!$)
убедитесь, что граница слова \b
, за которой она следует, не соответствует концу строки
Вы можете удалить любой токен, если это не поведение вы хотите.
Чтобы предотвратить совпадение местоположений вроде 3, a
, просто измените отрицательный просмотр вперед на (?!,|$)
или добавьте (?!,)
в регулярное выражение.
Regex # 3
Если \b
нельзя использовать (например, если у вас есть числа вроде 3.3
), вы можете вместо этого использовать следующее:
См. Здесь используемое регулярное выражение
(?:(?<=\s\d)|(?<=^\d))(?=\s)
Как это работает:
(?:(?<=\s\d)|(?<=^\d))
соответствует любому из следующих значений: (?<=\s\d)
положительный просмотр назад обеспечение того, что предшествует, является пробельным символом (?<=^\d)
положительный просмотр назад, гарантирующий, что то, что предшествует, является началом строки
(?=\s)
положительный просмотр вперед, гарантирующий, что последующее является пробелом символ
Regex # 4
Если вам не нужно сопоставлять цифры в начале строки, измените второе регулярное выражение, удалив второй просмотр назад как таковой:
См. здесь используется регулярное выражение
(?<=\s\d)(?=\s)
Код
Пример кода (замените шаблон регулярного выражения на тот, который вам больше подходит):
import re
x = 'I am going at 5pm to type 3 and the 9 later'
r = re.sub(r'(?<=\b\d)\b', ',', x)
print(r)