我尝试使用python re.findall获取所需的字符串。字符串如下。
abcd|123|ABCD|112233|
abcd|234|ABCD|112233|
abcd.abc|123|ABCD|112233|
efgh|234|EFGH|445566|
efgh|4567|EFGH|445566|
efgh.abc|6789|EFGH|445566|
efgh.abc|4567|EFGH|445566|
xyz|567|XYZ|557799|
xyz.abc|567|XYZ|557799|
我需要所有以“efgh”开头的行,所以我使用re.findall('efgh. ',data),但我得到如下..我只需要前两行(efgh的,而不是efgh.abc)。我可以使用re.search('efhg(.)',data).group得到相同的,但只得到第一行,缺少第二行。请帮助我如何实现这一点。
efgh|234|EFGH|445566| <- These two rows
efgh|4567|EFGH|445566| <-
efgh.abc|6789|EFGH|445566|
efgh.abc|4567|EFGH|445566|
1条答案
按热度按时间mxg2im7a1#
您可以用途:
说明
^
字符串开头efgh
(?!\.)
负先行,Assert不是右侧的文字点.*
匹配行的其余部分Regex demo|Python demo
输出
或者,如果始终有管道跟随:
Regex demo
请注意,如果存在捕获组,
re.findall
将返回该捕获组的值。如果需要完全匹配,可以省略捕获组。