【发布时间】:2017-12-09 19:41:45
【问题描述】:
我正在尝试匹配字符串 &abD&eG
来自abCD#&&abCD&abD&eG
一般规则是:
匹配由 alpha 组成的字符串,该字符串必须遵循 & 但不是 #&&。
但是一旦字符串以单个& 开始,#&& 仍被视为匹配的一部分。
连续的& 将被视为匹配。
所以一些简化的示例字符串和匹配是:
#&&abc&abc
应该匹配:&abc
&abc&abc
应该匹配:&abc&abc
#&&abc&abc#&&abc
应该匹配:&abc#&&abc
#&&abc#&&abc
应该匹配:NO MATCH
#&&abc
应该匹配:NO MATCH
abc#&&
应该匹配:NO MATCH
abc
应该匹配:NO MATCH
&&abc&abc
应该匹配:&&abc&abc
&&abc#&&
应该匹配:&&abc#&&
#&&&&abc
应该匹配:&&abc
&&abc&abc&&&&
应该匹配:&&abc&abc&&&&
&&&
应该匹配:&&&
abc&abc
应该匹配:&abc
我目前有正则表达式(?<!#&&)(&\p{Alnum}+)+,但它会检测& 之后的序列,无论它后面是否跟#&。
我应该如何修改它以使其符合我的一般规则?
【问题讨论】:
-
“匹配”是什么意思?你的意思是代码应该打印出匹配的字符串?
-
你为什么有“?
-
@Keara 我正在使用 Pattern 对象和 Matcher 对象。
-
@user1676075 ?
-
@WiktorStribiżew 我已经改写了这个问题,以便更具体地针对我的情况