但是我的输出是这样的:it's level 1 not level II or level III.
逗号被跳过了,我不希望它被忽略。在某些情况下也是如此
我有Level这个词,而不是Level
1条回答
网友
1楼 ·
发布于 2024-04-26 04:16:10
你可以用
import re
text = "it's level I, not level II or level III. It's Level I, not Level II or Level III."
print(re.sub(r'\b([lL]evel\s+)I\b', r'\g<1>1', text))
# => it's level 1, not level II or level III. It's Level 1, not Level II or Level III.
print(re.sub(r'(?<=\b[lL]evel )I\b', '1', text))
# => it's level 1, not level II or level III. It's Level 1, not Level II or Level III.
你可以用
见Python demo
注释
\b([lL]evel\s+)I\b
-匹配一个整词level
,后跟一个或多个空格,然后匹配一个整词I
(由于单词边界),并替换为对组值的反向引用(\g<1>
是一种明确的反向引用语法,因为此处使用的下一个字符是数字)(?<=\b[lL]evel )I\b
-匹配紧跟在整词{I
作为整词匹配李>注意2:您也可以使用
r'\b((?i:level)\s+)I\b'
和r'(?<=\b(?i:level) )I\b'
以完全不区分大小写的方式匹配level
相关问题 更多 >
编程相关推荐