java,正则表达式字符串不包含/之间的一组单词

标签 java regex

我知道这似乎是一个常见问题,但尽管进行搜索仍无法解决我的问题。 我需要一个正则表达式,仅匹配不以指定单词集开头且由/包围的字符串。 示例:

/harry/white
/sebastian/red
/tom/black
/tomas/green

我不想要以/harry/和/tom/开头的字符串,所以我希望

/harry/white     NO
/sebastian/red   YES
/tom/black       NO
/tomas/green     YES

1) ^/(?!(harry|tom)).*    doesn't match /tomas/green
2) ^/(?!(harry|tom))/.*   matchs nothing
3) ^/((harry|tom))/.*     matchs the opposite

什么是正确的正则表达式?如果有人解释一下为什么 1 和 2 是错误的,我将不胜感激。 请不要责怪我:) 谢谢。

最佳答案

您需要在否定前瞻内(而不是外部)为它们添加结尾斜杠:

^/(?!(harry|tom)/).*

不添加斜杠,将匹配 tomas 中的 tom,并且否定的前瞻不会满足。

关于java,正则表达式字符串不包含/之间的一组单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960619/

相关文章:

java - Spring 与 JMS 集成无法正常工作

Java Spring MVC 映射问题

RegEx 在 Powershell 中匹配两个字符串之间的字符串

javascript - 使用 RegExp 删除所有特殊字符

ruby - Ruby正则表达式中\A\z和^$的区别

sql - PLSQL 从字符串末尾开始显示数字

java - "not authorized to execute this request"使用 arangodb java 驱动程序

java - 打印对象数组会出现空指针异常

java - boolean 检查后单击单选按钮

正则表达式 - 将 HTML 转换为 ol 标签的 Markdown