Java Regex:为什么捕获非捕获组?

时间:2018-10-03 12:31:39

标签: java regex capturing-group

我正在Java中使用此正则表达式:

^(Mon(?:.?|day)?)(?:[\.,])?$(可以测试here

我想记录下一天,然后是可选的.,。 如果是星期一,我想捕获MondayMon。但是,我不希望将可选的.,保存在捕获组中。这似乎只适用于“星期一”,不适用于“星期一”。 (请参阅链接)。

我该如何实现?

1 个答案:

答案 0 :(得分:2)

您可以使用

^(Mon(?:day)?)[.,]?$

请参见regex demo

详细信息

  • ^-字符串的开头(如果使用.matches(),则省略)
  • (Mon(?:day)?)-捕获组1:
    • Mon-文字子字符串
    • (?:day)?-可选的day字符序列
  • [.,]?-可选的点或逗号
  • $-字符串结尾(如果使用.matches(),则省略)