我正在编写一个程序来自动编写一些C代码,(我正在编写将字符串解析为具有相同名称的枚举)C对字符串的处理并不是那么好.所以有些人一直在唠叨我试试python.
我创建了一个应该删除C风格/* COMMENT */和//COMMENT
字符串的函数:这是代码:
def removeComments(string):
re.sub(re.compile("/\*.*?\*/",re.DOTALL ) ,"" ,string) # remove all occurance streamed comments (/*COMMENT */) from string
re.sub(re.compile("//.*?\n" ) ,"" ,string) # remove all occurance singleline comments (//COMMENT\n ) from string
Run Code Online (Sandbox Code Playgroud)
所以我尝试了这个代码.
str="/* spam * spam */ eggs"
removeComments(str)
print str
Run Code Online (Sandbox Code Playgroud)
它显然没有做任何事情.
关于我做错了什么的任何建议?
有一种说法,我听过几次:
如果您遇到问题而尝试使用Regex解决问题,最终会遇到两个问题.
编辑:回顾这几年后.(经过更多的解析经验)
我认为正则表达式可能是正确的解决方案.而这里使用的简单正则表达"足够好".我可能没有在这个问题上强调这一点.这是针对单个特定文件的.那没有棘手的情况.我认为保持文件解析对于正则表达式而言要简单得多,而不是将正则表达式复杂化为不可读的符号汤.
我正在编写一个函数来从python中的文本中分割数字和其他一些东西.代码看起来像这样:
EN_EXTRACT_REGEX = '([a-zA-Z]+)'
NUM_EXTRACT_REGEX = '([0-9]+)'
AGGR_REGEX = EN_EXTRACT_REGEX + '|' + NUM_EXTRACT_REGEX
entry = re.sub(AGGR_REGEX, r' \1\2', entry)
Run Code Online (Sandbox Code Playgroud)
现在,这段代码在python3中工作得非常好,但它在python2下不起作用并得到" 无法匹配的组 "错误.
问题是,我需要支持这两个版本,我无法让它在python2中正常工作,尽管我尝试了其他各种方法.
我很好奇这个问题的根源是什么,是否有任何解决方法?