在Python中使用正则表达式从字符串中的源代码中提取字符串常量

在Python中使用正则表达式从字符串中的源代码中提取字符串常量,python,regex,lexical-analysis,Python,Regex,Lexical Analysis,如何从源代码中获取字符串常量 例如,以下是我试图处理的源代码: var v=“这是字符串常量+一些数字,还包括\” 我无法获取引号内的所有内容。通过使用此正则表达式:“(.*)” 我无法获取var、v、=或除字符串以外的任何其他内容。您需要匹配开头引号,然后匹配转义字符或普通字符(引号和反斜杠除外),然后匹配结尾引号: "(?:\\.|[^"\\])*" 要获取引号内的所有内容,您可以尝试以下方法: “\”+?\”与re.findall()一起使用lookback,以确保“前面没有\ imp

如何从源代码中获取字符串常量

例如,以下是我试图处理的源代码:

var v=“这是字符串常量+一些数字,还包括\”
我无法获取引号内的所有内容。通过使用此正则表达式:
“(.*)”


我无法获取
var
v
=
或除字符串以外的任何其他内容。

您需要匹配开头引号,然后匹配转义字符或普通字符(引号和反斜杠除外),然后匹配结尾引号:

"(?:\\.|[^"\\])*"

要获取引号内的所有内容,您可以尝试以下方法:
“\”+?\”
re.findall()

一起使用lookback,以确保“前面没有\

import re

data = 'var v = "this is string constant + some numbers and \" is also included "\r\nvar v = "and another \"line\" "'
matches = re.findall( r'= "(.*(?<!\\))"', data, re.I | re.M)
print(matches)

Python没有使用“var”。你的问题没有多大意义——你到底想完成什么?看起来你想用Python解析其他编程语言。不要使用正则表达式执行此操作;这只会导致心痛。使用合适的解析器。可能相关:Regex非常适合这样做。语言解析器是使用正则表达式构建的,至少在部分工作中是这样,这就是其中之一。完全解析文本和从中提取一些位是有区别的。
['this is string constant + some numbers and " is also included ', 'and another "line" ']