什么正则表达式可以匹配一串字母
U
和 O
,以便最多有一个字母 U
与字母 O
相邻?
我们希望匹配文本字符串,例如
OOOOUUUU
和 UUUUOOO
。
但是,
U
和O
不应彼此接触太多,如OUOUUUOOO
所示
字符串 | IS_MATCH |
---|---|
空字符串 | 不 |
|
是的 |
|
是的 |
|
是的 |
|
是的 |
|
是的 |
, |
是的 |
|
是的 |
|
是的 |
|
不 |
|
不 |
|
不 |
字母
O
和 U
应连续出现,最多出现一次。
假设 AS 是字符串文字的集合,对于集合 AS 中的任何字符串 A,我们理想的正则表达式 R 与字符串文字 A 匹配。
AS = {"U", "O", "OU", "UO", "UOO", "OOU", "UUO", "OOU", ...}
令 A 为集合 AS 中的字符串。
因此,如果
UO
是字符串 A 的子序列,那么 OU
是 NOT 字符串 A 的子序列。
此外,如果
OU
是字符串 A 的子序列,则 UO
NOT 字符串 A 的子序列。
交替使用 O 和 U,反之亦然:
O+U*|U+O*