在python中如何通过正则表达式获取值?
这是示例代码在python中如何通过正则表达式获取值?,python,regex,Python,Regex,这是示例代码 int myCodeVersion = 100; 我的.py代码如下 fp = open(path, 'r').read() myCodeVer = ''.join(map(str, re.findall('myCodeVersion'+ '\s=\s(.*?) ', fp))) print 'My Code version: ' + myCodeVer 这是我的.py代码的结果 My Code version: 100; 我只想打印下面的数字 My Code versio
int myCodeVersion = 100;
我的.py代码如下
fp = open(path, 'r').read()
myCodeVer = ''.join(map(str, re.findall('myCodeVersion'+ '\s=\s(.*?) ', fp)))
print 'My Code version: ' + myCodeVer
这是我的.py代码的结果
My Code version: 100;
我只想打印下面的数字
My Code version: 100
如何修复my regex?使用该特定文件,您可以这样做:
myCodeVer = ''.join(map(str, re.findall('myCodeVersion'+ '\s=\s(\d*)', fp)))
import re
with open(file, 'r') as f:
myCodeVer = re.findall('(?<=myCodeVersion)(?:\s*=\s*)(\d+)', f.read())
print 'My Code version: ' + myCodeVer[0]
正则表达式:
(?对于该特定文件,您可以这样做:
import re
with open(file, 'r') as f:
myCodeVer = re.findall('(?<=myCodeVersion)(?:\s*=\s*)(\d+)', f.read())
print 'My Code version: ' + myCodeVer[0]
正则表达式:
(?这可能会起作用:
.*\s*=\s*(.*?);
这可能会起作用:
.*\s*=\s*(.*?);
一种更通用的方法是捕获组。例如,我们可以使用模式匹配器将变量类型、名称和值捕获为组,如下所示:
s = 'int myCodeVersion = 100;'
import re
# compile the regex pattern, if you need to use multiple times, it will be faster
pattern = re.compile(r"(int|float|double)\s+([A-Za-z][A-Za-z0-9_]+)\s*=\s*(\d+)\s*;")
m = re.match(pattern, s)
print 'var type: ' + m.group(1)
print 'var name: ' + m.group(2)
print 'var value: ' + m.group(3)
#var type: int
#var name: myCodeVersion
#var value: 100
对于您感兴趣的特定情况,可以使用相同的方法将代码简化为以下内容:
pattern = re.compile(r"int\s+myCodeVersion\s*=\s*(\d+)\s*;")
print 'My Code version: ' + ''.join(map(str, re.match(pattern, s).group(1)))
# My Code version: 100
一种更通用的方法是捕获组。例如,我们可以使用模式匹配器将变量类型、名称和值捕获为组,如下所示:
s = 'int myCodeVersion = 100;'
import re
# compile the regex pattern, if you need to use multiple times, it will be faster
pattern = re.compile(r"(int|float|double)\s+([A-Za-z][A-Za-z0-9_]+)\s*=\s*(\d+)\s*;")
m = re.match(pattern, s)
print 'var type: ' + m.group(1)
print 'var name: ' + m.group(2)
print 'var value: ' + m.group(3)
#var type: int
#var name: myCodeVersion
#var value: 100
对于您感兴趣的特定情况,可以使用相同的方法将代码简化为以下内容:
pattern = re.compile(r"int\s+myCodeVersion\s*=\s*(\d+)\s*;")
print 'My Code version: ' + ''.join(map(str, re.match(pattern, s).group(1)))
# My Code version: 100
Thx.但是删除空白re.findall('mycdeversion\s*=\s*(\d+),fp)[0]
就足够了。事实上,\d*
是错误的,必须至少是\d+
。Thx.但是删除空白re.findall('mycdeversion\s*=\s*(\d+),fp)[0]
就足够了。事实上,\d*
是错误的,必须至少是\d+。