nvr*_*vrs 5 java regex regexbuddy matcher
我一直在反对这个问题已经有一段时间了:我想要捕获所有[a-z]+[0-9]?字符序列,不包括字符串sin|cos|tan等等.所以完成了我的正则表达作业,以下正则表达式应该有效:
(?:(?!(sin|cos|tan)))\b[a-z]+[0-9]?
Run Code Online (Sandbox Code Playgroud)
正如你看到我使用负前瞻与交替沿-在\b非捕获组右括号之后关键是要避免匹配in的sin等正则表达式有意义,因为事实上我与使用RegexBuddy和Java尝试它作为目标实现并获得想要的结果,但它不能使用Java Matcher和Pattern对象!有什么想法吗?
干杯
该\b是放错了地方.它要寻找那些没有正弦/余弦/棕褐色单词边界之前它.但是在其中任何一个边界之后的边界最后会有一个字母,所以它必须是一个字结束边界,如果下一个字符是az,则不能这样.
此外,否定前瞻(如果有效)将排除类似的字符串cost,如果你只是过滤掉关键字,我不确定你想要的那些.
我建议:
\b(?!sin\b|cos\b|tan\b)[a-z]+[0-9]?\b
Run Code Online (Sandbox Code Playgroud)
或者,更简单地说,您可以在之后匹配\b[a-z]+[0-9]?\b并过滤掉关键字列表中的字符串.您并不总是必须在正则表达式中执行所有操作.
| 归档时间: |
|
| 查看次数: |
11635 次 |
| 最近记录: |