有没有办法在python中写出匹配以下格式字符串的正则表达式:
feat(fix-validation): some texts (Aerogear-G1010)
或
feat$($fix-validation$)$:$some texts$($Aerogear-G1010$)
这里,$ = 表示可以存在零个或多个空格
feat
: 来自固定字符串子集的字符串 ['feat','fix','docs','break']
fix-validation
: 最大n长度
some texts
: 最大m长度
Aerogear-G1010
: 前缀应该总是一个字符串 Aerogear-
之后是一些最大 q 长度的字母数字字符
注意:我们不能转义像 (
)
:
-
这样的特殊字符,并且应该与如下例所示:
我只能使用 pattern: '^fix|docs|feat\s+\('
将字符串与字符串的固定子集匹配。我无法在后跟 (some texts) :
这能实现吗?提前谢谢你:)
答案 0 :(得分:1)
从您的正则表达式 '^fix|docs|feat\s+\('
中,\s+
匹配一次到无限次之间的任何空白字符。这至少需要一个空格字符。
相反:
^(feat|docs|fix|breaking) *\( *(.*?) *\) *: *(.*?) *\( *(.*?) *\)$
我使用了输入空格 (
),但如果您想包含任何空格字符,您应该使用 \s
,它相当于 [\r\n\t\f\v ]
。
应该做你想要的,你可以在这里看到每个部分在做什么:https://regex101.com/r/EsF8FF/4
我建议阅读那里的解释并阅读 re
模块的 Python 文档:https://docs.python.org/3/library/re.html