我有以下字符串:

string1; 1.8w/v PEG_8000; string2; ;;


我想获得; 1.8w/v PEG_8000;部分。我尝试了以下方法:

a =re.search(';[^.;]+PEG[^.;]+;','string1; 1.8w/v PEG_8000; string2; ;;'


返回a = None

我想念什么?

(OS X优胜美地,Python 2.7

编辑:我之前说了以下,我发现这是不正确的。我忘了在尝试此操作之前先编辑了字符串。


  有趣的是,如果我执行grep -E --color ';[^.;]+PEG[^.;]+;' file,其中file包含字符串,则可以突出显示该字符串。


编辑2:我有一个很大的文件,带有这样的字符串,关键字PEG不一定出现在第二个字段中。这就是为什么我不使用split(';')的原因。

最佳答案

您需要从第一个字符类中删除点。因为在分号和子字符串PEG之间存在一个点,导致正则表达式失败。请注意,字符类中的点仅与文字点匹配。

>>> re.search(r';[^;]+PEG[^.;]+;','string1; 1.8w/v PEG_8000; string2; ;;').group()
'; 1.8w/v PEG_8000;'

09-25 17:24