我有以下字符串:
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
)
编辑:我之前说过以下内容,但我发现这不是真的。我忘了我在尝试之前编辑了字符串。
The funny thing is, if I do
grep -E --color ';[^.;]+PEG[^.;]+;' file
, wherefile
contains the string, it can highlight it.
编辑 2: 我有一个包含此类字符串的巨大文件,其中关键字 PEG
不一定出现在第二个字段中。这就是我不使用 split(';')
的原因。
最佳答案
一个否定的字符类匹配所有除了那些指定的字符。因此,文字 .
导致了这里的问题。您可以按如下方式修改您的正则表达式:
>>> import re
>>> s = 'string1; 1.8w/v PEG_8000; string2; ;;'
>>> re.search(';[^;]+PEG[^;]+;', s).group()
'; 1.8w/v PEG_8000;'
关于python - python 中的正则表达式与 grep 的功能不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837544/