在Python中重新模块

时间:2013-08-14 05:54:52

标签: python regex

我已经开始在python中使用re模块并编写小程序。得到以下输出。 我认为这是正确的替代但我希望修改字符串以下方式。 我试过但无法修改。任何人都可以指出我的错误或想法

  

str_result = // #define FULL_CHIP / *开启芯片级设计* /

import re
>>> str = "#define FULL_CHIP /* Turn on for chip level design */"
>>> str = re.sub(r'#define FULL_CHIP.*', r'\\/1',str)
>>> print str
\/1

2 个答案:

答案 0 :(得分:2)

这里不需要正则表达式:

>>> strs = "#define FULL_CHIP /* Turn on for chip level design */"
>>> if strs.startswith('#define FULL_CHIP'):
       strs = '//' + strs
>>> strs
'//#define FULL_CHIP /* Turn on for chip level design */'

如果您仍想使用正则表达式,请使用()捕获一个组:

>>> strs = "#define FULL_CHIP /* Turn on for chip level design */"
>>> re.sub(r'(#define FULL_CHIP)',r'//\1', strs)
'//#define FULL_CHIP /* Turn on for chip level design */'

上述正则表达式将替换字符串中任何位置的所有#define FULL_CHIP

要替换字符串开头的#define FULL_CHIP,请使用^

>>> re.sub(r'^(#define FULL_CHIP)',r'//\1', strs)

答案 1 :(得分:0)

如果问题比规定的更复杂并且您确实需要RegEx,则第二行应该是:

str= re.sub(r'#define FULL_CHIP.*',r'//\0',str)

原因是您希望生成//,然后匹配整个文本。这是第0组,而不是第1组。此外,我不明白为什么/\r'\\/1'中出现倒置。如果我的任何假设是错误的,请告诉我。