gpt4 book ai didi

用于匹配单行和多行注释的 Python 正则表达式。

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:58 26 4
gpt4 key购买 nike

我正在尝试为 PLY 创建一个 python 正则表达式,它将匹配

形式的注释
// some comment

/* comment
more comment */

所以我试过了

t_COMMENT = r'//.+ | /\*.+\*/'

但这不允许多行注释,当我尝试使用“点匹配所有”选项解决此问题时,如

t_COMMENT = r'//.+ | (?s) /\*.+\*/'

它导致 '//' 注释类型匹配多行。另外,如果我尝试使用两个独立的正则表达式,例如

t_COMMENT = r'//.+' 
t_COMMENT2 = r'(?s) /\*.+\*/'

'//' 注释类型仍然匹配多行,就好像选择了点匹配所有选项一样。

有人知道怎么解决吗?

最佳答案

下面的正则表达式将匹配两种类型的评论,

(?://[^\n]*|/\*(?:(?!\*/).)*\*/)

DEMO

>>> s = """// some comment
...
... foo
... bar
... foobar
... /* comment
... more comment */ bar"""
>>> m = re.findall(r'(?://[^\n]*|/\*(?:(?!\*/).)*\*/)', s, re.DOTALL)
>>> m
['// some comment', '/* comment\n more comment */']

关于用于匹配单行和多行注释的 Python 正则表达式。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com