java - Java Regex:为什么非捕获组被捕获?
问题描述
我在 Java 中使用这个正则表达式:
^(Mon(?:.?|day)?)(?:[\.,])?$
(这可以在这里测试)
我想在可选的.
or后面捕获一天,
。在星期一的情况下,我想捕获Monday
或Mon
。但是,我不希望将可选的.
或,
保存在捕获组中。这似乎只适用于“星期一”,而不适用于“星期一”。(见链接)。
我怎样才能做到这一点?
解决方案
您可以使用
^(Mon(?:day)?)[.,]?$
查看正则表达式演示
细节
^
- 字符串的开头(如果使用 则省略.matches()
)(Mon(?:day)?)
- 捕获组 1:Mon
- 文字子串(?:day)?
- 一个可选的day
字符序列
[.,]?
- 可选的点或逗号$
- 字符串结尾(如果使用 则省略.matches()
)
推荐阅读
- laravel - laravel cron 没有触发,但其他 cron 正在触发
- ios - iOS MPMediaQuery.albums().collections 在第一次运行时返回 nil,而用户允许访问媒体库
- python - Python PIP 和 InsecurePlatformWarning
- php - 如何计算 belongsTo 模型 laravel 的总和
- javascript - 搜索/过滤下拉列表:单击时更改值变量
- apache-spark - Apache Spark 历史服务器日志
- shell - shell 脚本中的 mkdir 权限被拒绝
- unreal-engine4 - 物理模拟的 Pawn 抓钩
- android - Xamarin Android CookieManager 不存储所有 cookie
- javascript - 在数组数组中查找最大/最小元素的最有效方法