我想删除短语中的第二部分,只要它超过3个字符(字母和数字),如果字符是3个或更少,则添加空格
在以下测试集中:
CENTRAL CARE HOSPITAL/HOPITAL CENTRALE DE SOINS
ABC/DEF
FOUNDATION INSTITUTION/FUNDATION DEL INSTITUTO
HAPPY SPRING BREAK 20/20
结果应为:
CENTRAL CARE HOSPITAL
ABC DEF
FOUNDATION INSTITUTION
HAPPY SPRING BREAK 20 20
我的第一次尝试是:
([^\/]+$)
但是,斜杠后面的所有字符串都消失了,因为它没有任何限制。我需要包含一个负前瞻,说明当斜杠后的字符串超过3个字符时,我需要删除字符串:
text= re.sub(r'(^[^\/]+)(?:[\/])(?![A-Z]{3})',
r'\1 ',
text,
0,
re.IGNORECASE)
我得到了以下不正确的信息:
CENTRAL CARE HOSPITAL/HOPITAL CENTRALE DE SOINS
ABC DEF
FOUNDATION INSTITUTION/FUNDATION DEL INSTITUTO
HAPPY SPRING BREAK 20 20
我怎样才能摆脱前面的斜线和字符串
谢谢
您可以使用2个捕获组来捕获
/
前后的1-3个字符A-Z或数字,并在替换中使用这些组,中间有一个空格使用交替匹配正斜杠,然后是要移除的刺的其余部分
在替换中,使用2个捕获组
解释
\b
字边界([A-Z0-9]{1,3})
捕获组1,匹配1-3次A-Z或一个数字/
逐字匹配([A-Z0-9]{1,3})
捕获第2组,匹配1-3次A-Z或一个数字\b
字边界|
或/.*
匹配/
和0+乘以除换行符以外的任何字符Regex demoPython demo
示例代码
输出
尝试以下正则表达式模式:
你必须使用正则表达式吗?这样做有什么不对
相关问题 更多 >
编程相关推荐