简体   繁体   English

正则表达式定位数字后跟空格后跟字符

[英]Regex locate number followed by space followed by character

I tried to locate only number followed by space and a character after it.我试图只找到数字后跟空格和一个字符。

Exemple : text = "3 R"

and want it to be like this :并希望它是这样的:

Exemple : text = "3. R"

i've tried this code :我试过这个代码:

text= re.sub(r'([0-9])(?!.*\d)', r'\1. ', text)

Am getting closer but don't know what should i add to it.我越来越近了,但不知道我应该添加什么。

Update更新

Text :文本 :

Évitez les conversations malsaines en utilisant les 3 R, à savoir 
‘reformuler, recentrer et réorienter’. Créez un cadre confortable en 
reformulant les phrases susceptibles de générer des émotions négatives. Vous 
pouvez également reformuler des reproches tels que : « Cela m’ennuie que tu 
passes autant de temps sur des projets de moindre importance qui ne mènent 
nulle part » en disant plutôt « J’aimerais que tu consacres les efforts que 
tu fournis dans ton travail à davantage de nouveaux projets plutôt qu’à 
quelques projets peu importants... Je suis sûr que tu disposes maintenant de 
suffisamment d’expérience pour gérer des projets inédits et ambitieux. »

my regex code :我的正则表达式代码:

    text= re.sub(r'\s*(?!\.[’"])([.,?:])(?!(?<=\d.)\d)\s*', r'\1 ', text)
    text= re.sub(r'\s*([-])\s*', r'\1', text)
    text= re.sub(u"\u2013", " ", text)
    text= re.sub(r'(\d)\s+(?=\d)', r'\1', text)
    text= re.sub(r'(\d)\/+(?=\d)', r'\1 ', text)
    text= re.sub(r'([0-9])\b(?!.*\d)',r'\1. ', text)

Output:输出:

Évitez les conversations malsaines en utilisant les 3 R, à savoir 
‘reformuler, recentrer et réorienter’. Créez un cadre confortable en 
reformulant les phrases susceptibles de générer des émotions négatives. Vous 
pouvez également reformuler des 
reproches tels que:  Cela m’ennuie que tu passes autant de temps sur des 
projets de moindre importance qui ne mènent nulle part  en disant plutôt  
J’aimerais que tu consacres les efforts que tu fournis dans ton travail à 
davantage de nouveaux projets plutôt qu’à quelques projets peu importants, Je 
suis sûr que tu disposes maintenant de suffisamment d’expérience pour gérer 
des projets inédits et ambitieux.

i've tried the codes suggested by you guys but not working idk why, text is a long string.我已经尝试了你们建议的代码,但没有工作 idk 为什么,文本是一个长字符串。

The problem could be due to using too much regex??问题可能是由于使用了过多的正则表达式??

I'm using python3.9我正在使用 python3.9

snippet片段

在此处输入图片说明

在此处输入图片说明

根据您定义的约束(输入/输出)和我们的讨论,您可以使用以下代码段:

re.sub(r"(\d+)(?:\s+)(\w)", r"\1. \2", text)

This works for me:这对我有用:

re.sub('(\d)\s([a-zA-Z])', r'\1. \2', text)

It replaces the 3 R with 3. R .它将3 R替换为3. R Also works with bigger numbers, like 31789 R , and lowercase 3 r .也适用于更大的数字,如31789 R和小写3 r

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM