Regex 正则表达式将单词和数字与重复序列匹配(FOO-123/FOO-456/…等)
我有一个变更日志,我需要如下所示:Regex 正则表达式将单词和数字与重复序列匹配(FOO-123/FOO-456/…等),regex,Regex,我有一个变更日志,我需要如下所示: - [FOO-123] This is a change from one project - [FOO-567 / FOO-890] This has two changes from one project - [BAR-123 / BAZ-456 / BANG-1234 ] This has three changes from three different projects 我对我现在的正则表达式很满意,但后来我开始进一步测试它,当我不小心输入了错
- [FOO-123] This is a change from one project
- [FOO-567 / FOO-890] This has two changes from one project
- [BAR-123 / BAZ-456 / BANG-1234 ] This has three changes from three different projects
我对我现在的正则表达式很满意,但后来我开始进一步测试它,当我不小心输入了错别字或添加了一个字符(如从BAR到FOO)来生成FOA或缺少一个/,它就搞砸了:
- [FOB-1234] hello
- [BAG-1234] how
- [FOO-1234 FOO-5678] are
- [FOA-1234 / BARG-1234 / BZF-1234] you?
我怎样才能得到它,使顶部总是好的,但底部永远不工作
我当前创建的正则表达式:
/-\s\[[(FOO|BAR|BAZ|BANG)-\d{\s}{/}{\s}+]*]\s.+/g
您可以匹配其中一个备选方案,并使用一个可选的重复组,该组前面有空格、正斜杠和空格
^-\s\[(?:FOO|BAR|BAZ|BANG)-\d+(?: / (?:FOO|BAR|BAZ|BANG)-\d+)*\] .+$
那会匹配的
字符串的开头^
匹配空白字符和\s\[
[
匹配任何备选方案(?:FOO | BAR | BAZ | BANG)
匹配-\d+
和1+位-
非捕获组(?:
匹配/(?:FOO | BAR | BAZ | BANG)-\d+
,1或替代项和-加1+数字/
关闭分组并重复0多次)*
匹配\].+
,空格和除换行符以外的任何字符的1+出现次数]
字符串结尾$
请注意,要删除组周围的
[
和]
,否则将使其成为字符类。尝试^-\s\[(?:FOO | BAR | BAZ | BANG)-\d+(?:/(?:FOO | BAR | BAZ | BANG)-\d+*]。+$
为什么是这一部分<代码>\d{\s}{/}{\s}+