我想提出一个与以下字符串匹配的Ruby Regex:
MAINT: Refactor something
STRY-1: Add something
STRY-2: Update something
Run Code Online (Sandbox Code Playgroud)
但不应该匹配以下内容:
MAINT: Refactored something
STRY-1: Added something
STRY-2: Updated something
MAINT: Refactoring something
STRY-3: Adding something
STRY-4: Updating something
Run Code Online (Sandbox Code Playgroud)
基本上,第一个字之后:
不应该与最终任一ed
或ing
这就是我目前所拥有的:
^(MAINT|(STRY|PRB)-\d+):\s([A-Z][a-z]+)\s([a-zA-Z0-9._\-].*)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了[^ed]
,[^ing]
但他们不会在这里工作,因为我的目标不仅仅是单个角色.
我无法找到适当的解决方案来实现这一目标.
你可以用
^[-\w]+:\s*(?:(?!(?:ed|ing)\b)\w)+\b.+
Run Code Online (Sandbox Code Playgroud)
请参阅regex101.com上的演示.
^ # start of the line/string
[-\w]+:\s* # match - and word characters, 1+ then :
(?: # non-capturing group
(?!(?:ed|ing)\b) # neg. lookahead: no ed or ing followed by a word boundary
\w # match a word character
)+\b # as long as possible, followed by a boundary
.* # match the rest of the string, if any
Run Code Online (Sandbox Code Playgroud)
Ruby
但我想你可以选择拆分并检查第二个单词是否以ed
或结尾ing
.对于未来的程序员/同事来说,后一种方法可能更容易处理.
归档时间: |
|
查看次数: |
566 次 |
最近记录: |