我尝试创建匹配特定字符串的正则表达式模式,如果字符串与模式匹配则返回true
,如果不匹配,则返回false
。以下是条件:
[
开头,以]
^[A-Za-z][A-Za-z0-9_]*$
如何制作一个检查所有这些条件的正则表达式?
答案 0 :(得分:3)
附上可重复的小组:
\[[A-Za-z][A-Za-z0-9_]*(?:,[A-Za-z][A-Za-z0-9_])*\]
这应该出现在最终字符串中。根据特定语言逃避特价。
答案 1 :(得分:2)
在Java中,没有\w
标志的Pattern.UNICODE_CHARACTER_CLASS
实际上与[a-zA-Z0-9_]
相同。所以,我会用
String pat = "\\[[a-zA-Z]\\w*(?:,[a-zA-Z]\\w*)*]";
请参阅IDEONE demo。与String#matches
一起使用,或者您必须在开头添加^
(或\\A
),最后添加$
(或\\z
)。
String pat = "\\[[a-zA-Z]\\w*(?:,[a-zA-Z]\\w*)*]";
System.out.println("[c1,T4,yu5]".matches(pat)); // TRUE
模式说明:
\\[
- 文字[
[a-zA-Z]
- 英文字母(与\\p{Alpha}
相同)\\w*
- 来自[a-zA-Z0-9_]
set (?:
- 开始非捕获组匹配...
,
- 逗号[a-zA-Z]\\w*
- 见上文)*
- ...零次或多次]
- 文字]
(不需要在字面上进行字面处理之外的转义)。