我正在尝试为<String>-<String>
创建一个正则表达式模式。这是我目前的模式:
(\w+\-\w+)
。
第一个字符串不允许为“ W”。但是,如果长度超过一个字母,它仍然可以包含“ W”。
例如:
W-80
->无效
W42-80
->有效
如何实现?
答案 0 :(得分:2)
只需将最后一个字符限制为“除'W'以外的任何其他字符char“。
有两种方法可以做到这一点:
负向后方(易于阅读):
^\w+(?<!W)-\w+$
请参见live demo。
交叉点取反(要读取的沉船):
^\w*[\w&&[^W]]-\w+$
请参见live demo。
-
问题已经转移。这是一种新方法:
^.+(?<!^W)-\w+
这允许除“ W”之外的所有内容作为第一个术语。
答案 1 :(得分:1)
因此,您的第一个字符串可以是:一个字符,但不能为W
或2个以上字符。实现该目标的简单模式是:
([^W]|\w{2,})-\w+
但是这种模式并不完全正确,因为现在它允许在第一部分使用任何字符,但是最初只允许使用\w
个字符。因此正确的模式是:
([\w&&[^W]]|\w{2,})-\w+
模式[\w&&[^W]]
表示\w
字符类中的任何字符,除了W
字符之外。