我想在以下条件的java的帮助下制作一个正则表达式。
他们是离开应用
(1) CL
(2) RH
我想为String
编写正则表达式CLCLRHRHCL
除RH not more than 2
所以写下这个
^([CL]* | ?> [RH]{1,4})*$
但RH 2条件不起作用
HII 我想在这个问题上添加一些更清楚的内容
字符串未修复
CLCLRHRHCL
字符串也可以从RH开始
喜欢
RHCLCLRHCL CLRHCLRH
或任何组合
但我希望在所有字符串中RH不应超过2我正在阅读java文档和其他正则表达式书籍但仍未找到解决方案。
我的正则表达式是:
^([CL] | [RH] {1,4}) $
此正则表达式:^ [CL] * | [RH] {1,4} $
工作正常但是当我添加*没有发生RH条件停止工作。
注意:不要担心空格,我不会在输入中提供任何空间。
答案 0 :(得分:5)
你真的需要阅读正则表达式教程。
我假设空间不仅仅是为了清晰,否则正则表达式甚至不会编译(注意代码编译和正则表达式编译之间的区别),但即使它确实如此,下面的类似参数也将如此持。
^([CL]* | ?> [RH]{1,4})*$
表示以下内容:
^
)(...)*
)
...|...
)
[CL]*
)的字符,然后空格(" "
)(是空格很重要) " ?"
)后跟"> "
,后跟1到4个R或H字符({{1 }})[RH]{1,4}
,它实际上需要在括号中 (?>...)
)这应该有效:
$
<强>解释强>
^(CL)*(RH(CL)*){0,2}$
)^
字符串("CL"
)(CL)*
)以下内容:
{0,2}
字符串"RH"
字符串("CL"
)(CL)*
)更易理解的版本:
$
<强>解释强>
^(CL)*(RH)?(CL)*(RH)?(CL)*$
)^
字符串("CL"
)(CL)*
字符串("RH"
)RH?
字符串("CL"
)(CL)*
字符串("RH"
)RH?
字符串("CL"
)(CL)*
)