2024-04-20 09:54:43 发布
网友
有人有学习更高级正则表达式的好资源吗
我一直有一些问题,我想确保一些东西不是用引号括起来的
也就是说,我正在尝试生成一个表达式,该表达式将匹配包含等式的python文件中的行
a = 4
这很简单,但我在设计一个表达式时遇到了困难,这个表达式能够将多个术语或用引号括起来的术语分开,如下所示:
a, b = b, a a,b = "You say yes, ", "i say no"
Python有一个非常好的Language Reference,它还包括descriptions of the lexical analysis and syntax。你知道吗
在您的例子中,这两个语句都是assignments,左边是list of targets,右边是list of expressions。你知道吗
但是由于语法部分的某些部分是上下文无关的,并且不是正则的,所以不能使用正则表达式(除非它们支持某种递归模式)。所以最好使用合适的解析器as Jonas H suggested。你知道吗
用正则表达式解析代码通常不是一个好主意,因为编程语言的语法不是正则语言。我不是一个很好的python程序员,但我认为用python模块(如this one或this one)解析python代码会更好
A认为必须对表达式进行标记以进行正确的计算,但是可以使用以下正则表达式检测模式
r'\s+(\w+)(\s*,\s*\w+)*\s*=\s*(.*?)(\s*,\s*.*?)*'
如果组(2)和组(4)不为空,则必须标记表达式
注意如果你有
a,b=f(b,a),g(a,b)
很难分析
Python有一个非常好的Language Reference,它还包括descriptions of the lexical analysis and syntax。你知道吗
在您的例子中,这两个语句都是assignments,左边是list of targets,右边是list of expressions。你知道吗
但是由于语法部分的某些部分是上下文无关的,并且不是正则的,所以不能使用正则表达式(除非它们支持某种递归模式)。所以最好使用合适的解析器as Jonas H suggested。你知道吗
用正则表达式解析代码通常不是一个好主意,因为编程语言的语法不是正则语言。我不是一个很好的python程序员,但我认为用python模块(如this one或this one)解析python代码会更好
A认为必须对表达式进行标记以进行正确的计算,但是可以使用以下正则表达式检测模式
如果组(2)和组(4)不为空,则必须标记表达式
注意如果你有
a,b=f(b,a),g(a,b)
很难分析
相关问题 更多 >
编程相关推荐