python正则表达式不符合我的想法

时间:2015-06-11 08:43:43

标签: python regex python-3.x

我正在尝试使用正则表达式对某些文件进行排序。

我有一个包含以下两行的文件

NET "MBC_ADR_I1<1>" LOC = "R2";
NET "GP_O<7>" LOC = "R20";

我使用以下表达式来获取其中一行

f2MatchLoc = re.search('(LOC)[ ]+=[ ]+["]?({})'.format(f1LocValue), f2Line, re.IGNORECASE)

其中f1LocValue = R2。但是我在这两条线上得到了一个匹配。

我试图在这里输入相同的表达方式 regex101.com

表明我的论证应该正确格式化

2 个答案:

答案 0 :(得分:3)

\b

您需要在R2之后使用r,以便不存在部分匹配。见demo。也可以使用raw或{{1}}模式。

答案 1 :(得分:1)

因为你没有条件如何结束字符串。

LOC = "R2

所以它匹配任何以LOC = "R2 LOC = "R2asd LOC = "R2121 LOC = "R2 " 开头的内容。以下是所有有效的搜索结果

\s

简单地说,您可以使用双引号或分号来标识搜索字符串的结尾。此外,您可以替换[]进行空白区域捕获,并且可以删除单个元素列表周围的r'(LOC)\s+=\s+"?({})"?;'

var string = "qwe/qwe/qwe/qwe//qwe/some_numbers_here_blabla.exe";
var start = string.lastIndexOf("/");
var end = string.lastIndexOf("_");
var result = string.substring(start + 1, end);