【发布时间】:2020-10-29 03:29:16
【问题描述】:
我知道 Regex 是一个非常热门的话题,并且有很多类似的问题,但是,我还没有找到符合我需求的问题。
我需要检查我的字符串的格式如下:
- 所有行必须以 5 位数字开头。
- 字符 6 到 12 必须是空格。
- 字符 13 必须是空格或星号。
- 如果在最后一个句点之前有句点、冒号或分号,则字符前面不能有空格,但后面必须有空格。
- 左括号后面不能跟空格。
- 右括号前面不能有空格。
我没有尝试实现冒号、分号或括号,但到目前为止我只停留在句号上。这些字符是可选的,所以我无法进行严格检查,我正在尝试捕捉它们,但在类似的情况下我仍然得到匹配
00000 *TEST .FINAL STATEMENT. //Matches, but it shouldn't match.
00001 *TEST2 . FINAL STATEMENT. //Matches, but it shouldn't match.
00002 *TEST3. FINAL STATEMENT. //Matches, **should** match.
这是我目前的正则表达式:
^\d{5}\s{6}[\s\*][^.]*([^.\s]+\.\s)?[^.]*\..*$
我真的不明白这是怎么发生的,特别是因为我使用 [^.] 表示我将接受除句点以外的任何内容作为通配符,并且可选模式一目了然:如果有句号,它后面不应该有空格,后面应该有空格。
【问题讨论】:
标签: java regex regex-group