首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配字符串,但如果它在Python中,则不要匹配特定的模式

匹配字符串,但如果它在Python中,则不要匹配特定的模式
EN

Stack Overflow用户
提问于 2017-04-04 20:05:25
回答 2查看 69关注 0票数 1

我一直试图匹配一个字符串,但是如果另一个字符串由空格分隔,那么我只想匹配第一个字符串,而不是这个额外的模式。这种额外的拍子总是以:

代码语言:javascript
复制
(from

下面是一组字符串的示例:

代码语言:javascript
复制
M /trunk
M /trunk/src/chip/GCC/ARMCMx/STM32F4xx/vectors.c
A /trunk/src/hal/include/spdif.h (from /branches/spdif_446/src/hal/include/spdif.h:1078)
M /trunk/src/hal/platforms/STM32/SAI/sai_lld.h
A /trunk/src/hal/platforms/STM32/SPDIF (from /branches/spdif_446/src/hal/platforms/STM32/SPDIF:1078)
A /trunk/src/hal/src/spdif.c (from /branches/spdif_446/src/hal/src/spdif.c:1078)

因此,正如您所看到的,这些行中有几行在显示初始路径后有一个额外的字符串。显示我的代码提交来自哪个分支。我只想要字符串的开头部分,一直到路径的末尾。我不想看到它是从哪个分支来的。我该怎么做呢?

我以为这会成功的:

代码语言:javascript
复制
(.+)[\s]

但它符合整条线,我不知道为什么。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-04 20:15:02

似乎,你可以用

代码语言:javascript
复制
^[A-Z]+\s+(\S+)

..。第一组,见a demo on regex101.com

Python中,这将是:

代码语言:javascript
复制
import re

string = """
M /trunk
M /trunk/src/chip/GCC/ARMCMx/STM32F4xx/vectors.c
A /trunk/src/hal/include/spdif.h (from /branches/spdif_446/src/hal/include/spdif.h:1078)
M /trunk/src/hal/platforms/STM32/SAI/sai_lld.h
A /trunk/src/hal/platforms/STM32/SPDIF (from /branches/spdif_446/src/hal/platforms/STM32/SPDIF:1078)
A /trunk/src/hal/src/spdif.c (from /branches/spdif_446/src/hal/src/spdif.c:1078)
"""

rx = re.compile(r'^[A-Z]+\s+(\S+)', re.MULTILINE)
files = rx.findall(string)
print(files)

# ['/trunk', '/trunk/src/chip/GCC/ARMCMx/STM32F4xx/vectors.c', 
#  '/trunk/src/hal/include/spdif.h', '/trunk/src/hal/platforms/STM32/SAI/sai_lld.h', 
#  '/trunk/src/hal/platforms/STM32/SPDIF', '/trunk/src/hal/src/spdif.c']

最后,为了回答您的初始问题,模式(.+)[\s]至少匹配任何字符(除换行符外)一次,但可能更多匹配到行尾。后面是一个(在本例中是不必要的)字符类([...]),包括空格(\s)。因此,在结尾,它匹配每一行(包括换行符)--这与根本不使用正则表达式相同。

票数 0
EN

Stack Overflow用户

发布于 2017-04-04 21:26:53

如果您只想在可能的(之前匹配,那么

(?m)^[^(\r\n]+

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43216691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档