java - Java 中匹配某个单词零次或一次出现的正则表达式

标签 java regex capturing-group

我编写了一个正则表达式来匹配以下模式:

任何字符,后跟连字符,后跟数字,后跟空格,后跟可选的不区分大小写的关键字space 后跟任何 char

例如,

  1. TXT-234 #comment anychars
  2. TXT-234 anychars

我写的正则表达式如下:

(?<issueKey>^((\\s*[a-zA-Z]+-\\d+)\\s+)+)((?i)?<keyWord>#comment)?\\s+(?<comment>.*)

但是上面的内容并没有捕获“#comment”的零出现,即使我已经指定了“?”为正则表达式。上例中的情况 2 总是失败,而情况 1 成功。

我做错了什么?

最佳答案

#comment 与#keyword 不匹配。这就是为什么你没有尝试比赛的原因。这个应该可以工作:

 ([a-zA-Z]*-\\d*\\s(((?i)#comment|#transition|#keyword)+\\s)?[a-zA-Z]*)

关于java - Java 中匹配某个单词零次或一次出现的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844053/

相关文章:

javascript - 我的正则表达式做错了什么?

Java 模式打印捕获组

java - 重复捕获组只匹配最后一次出现

java - AsyncHttpClient 和 Netty - 将工作线程返回到池的钩子(Hook)?

java - 有人可以解释以下用于查找重复循环或重复小数周期长度的方法吗?

c++ - 从 C++ 中的字符串列表生成正则表达式模式

c# - 将 String.Replace 替换为 Regex.Replace

javascript - 将第一次出现的字符串替换为另一个字符串

java - 将服务器的结果与java 2ME中的字符串进行比较

java - 如何设置 Eclipse 控制台语言环境/语言