相关疑难解决方法(0)

使用正则表达式从源文件中删除注释

我正在编写一个程序来自动编写一些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 regex string

25
推荐指数
4
解决办法
4万
查看次数

Python 2和3'重新'不一致

我正在编写一个函数来从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中正常工作,尽管我尝试了其他各种方法.

我很好奇这个问题的根源是什么,是否有任何解决方法?

python regex python-2.7

13
推荐指数
1
解决办法
780
查看次数

标签 统计

python ×2

regex ×2

python-2.7 ×1

string ×1