1

我已经开始在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
4

2 回答 2

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)
于 2013-08-14T05:58:28.947 回答
0

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

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

原因是您要生成//后跟整个文本匹配的内容。那是第 0 组,而不是第 1 组。另外,我不明白为什么/s 和\s 在 中出现倒置r'\\/1'。如果我的任何假设是错误的,请告诉我。

于 2013-08-14T06:15:17.117 回答