匹配模式的正则表达式
regex matching the pattern
有没有办法在python中写一个正则表达式来匹配以下格式的字符串:
feat(fix-validation): some texts (Aerogear-G1010)
或
feat$($fix-validation$)$:$some texts$($Aerogear-G1010$)
这里,$=表示可以出现零个或多个白色space
细分:
feat
: 来自固定字符串子集的字符串 ['feat','fix','docs','breaking']
fix-validation
: 最大 n 长度的字符串
some texts
: 最大 m 长度的字符串
Aerogear-G1010
:前缀应始终为字符串 Aerogear-
,然后是最大 q 长度
的一些字母数字字符
注意:我们不能转义像(
)
:
-
这样的特殊字符,应该在与以下示例中所示的格式完全相同:
- feat(feat-new):组创建的新功能 (Aerogear-1234)
- docs(new docs): 在文件 repo (Aerogear-G1235) 上添加新文档
- 修复(修复警告):修复用户提出的问题 (Aerogear-P1230)
我只能使用 pattern: '^fix|docs|feat\s+\('
将字符串与固定的字符串子集匹配。我无法在匹配的字符串后跟 (some texts) :
添加零个或多个 space
这能实现吗?提前谢谢你:)
从您的正则表达式 '^fix|docs|feat\s+\('
中,\s+
匹配任何白色 space 字符一次到无限次。这需要至少一个白色space字符。
改为:
^(feat|docs|fix|breaking) *\( *(.*?) *\) *: *(.*?) *\( *(.*?) *\)$
我使用了输入的 spaces (
) 但是如果你想包含任何 space 字符你应该使用 \s
相当于 [\r\n\t\f\v ]
.
应该做你正在寻找的,你可以在这里看到每个部分在做什么:https://regex101.com/r/EsF8FF/4
我建议阅读那里的解释并阅读 re
模块的 python 文档:https://docs.python.org/3/library/re.html
有没有办法在python中写一个正则表达式来匹配以下格式的字符串:
feat(fix-validation): some texts (Aerogear-G1010)
或
feat$($fix-validation$)$:$some texts$($Aerogear-G1010$)
这里,$=表示可以出现零个或多个白色space
细分:
feat
: 来自固定字符串子集的字符串 ['feat','fix','docs','breaking']
fix-validation
: 最大 n 长度的字符串
some texts
: 最大 m 长度的字符串
Aerogear-G1010
:前缀应始终为字符串 Aerogear-
,然后是最大 q 长度
注意:我们不能转义像(
)
:
-
这样的特殊字符,应该在与以下示例中所示的格式完全相同:
- feat(feat-new):组创建的新功能 (Aerogear-1234)
- docs(new docs): 在文件 repo (Aerogear-G1235) 上添加新文档
- 修复(修复警告):修复用户提出的问题 (Aerogear-P1230)
我只能使用 pattern: '^fix|docs|feat\s+\('
将字符串与固定的字符串子集匹配。我无法在匹配的字符串后跟 (some texts) :
这能实现吗?提前谢谢你:)
从您的正则表达式 '^fix|docs|feat\s+\('
中,\s+
匹配任何白色 space 字符一次到无限次。这需要至少一个白色space字符。
改为:
^(feat|docs|fix|breaking) *\( *(.*?) *\) *: *(.*?) *\( *(.*?) *\)$
我使用了输入的 spaces (
) 但是如果你想包含任何 space 字符你应该使用 \s
相当于 [\r\n\t\f\v ]
.
应该做你正在寻找的,你可以在这里看到每个部分在做什么:https://regex101.com/r/EsF8FF/4
我建议阅读那里的解释并阅读 re
模块的 python 文档:https://docs.python.org/3/library/re.html