微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提交消息的正则表达式问题

如何解决提交消息的正则表达式问题

需要这种类型的提交消息

TaskId : 123456 - commit message
TaskId: 123456 - commit message
TaskId:123456 - commit message
TaskId:123456- commit message
TaskIds : 123456**,123456** ( This Can be multiple times with space without space ) - commit message
TaskIds : 123456**and 123456** ( This Can be multiple times with space without space ) - commit message
Task id - 1233443:commit message 

我已经尝试过这个正则表达式,但缺少一些东西

[Tt][Aa][Ss][Kk][Ss]?\s*(?:[Ii][Dd])?\s*[: \s-]?(\s*(?:,|and)?\s*\d+)?\s*(?:\s*)

预期输出是:

$1 = (TaskId:123456,123456) In the commit message on Bitbucket This should be a Link to my custom task system

For Ex:
**https://abc.xyz.com?taskid=$1**

解决方法

从文本中删除评论,然后我假设您要匹配的是:(和类似的变体)

TaskId : 123456 - commit message
TaskId: 123456 - commit message
TaskId:123456 - commit message
TaskId:123456- commit message
TaskIds : 123456,123456 - commit message
TaskIds : 123456 and 123456 - commit message
Task id - 1233443:commit message 

代替 [Tt][Aa][Ss][Kk][Ss]? 那么你也可以使用 insensitive 标志并将该部分更改为 tasks?

如果你想限制 (\s*(?:,|and)?\s*\d+)* 只接受一个 ,/and,那么你可以翻转它,即匹配 \d+ 然后从零到-许多",number"。简而言之(?:(\d+)(?:\s*(?:,|and)\s*(\d+))*)

最终模式可能如下所示:

^task(?:\s*ids?)\s*[:-]\s*(?:(\d+)(?:\s*(?:,|and)\s*(\d+))*)\s*[:-]\s*(.*)$

Demo on Regex101

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?