Java 如何在开始、中间和结束处为特定字符匹配正则表达式
我有一个字符串,如果有则无效Java 如何在开始、中间和结束处为特定字符匹配正则表达式,java,regex,Java,Regex,我有一个字符串,如果有则无效 _ at start || _ at end || more than one consecutive _ in the middle 但是,如果在一个字符串中找到多个非连续的\uuu,则该值有效 例如 "'test_test_test" - valid "test_" - invalid "_test" - invalid "test_____test" - invalid 我正在尝试不同的模式将所有这些条件匹配为一个条件,但似乎不适用于例如(
_ at start ||
_ at end ||
more than one consecutive _ in the middle
但是,如果在一个字符串中找到多个非连续的\uuu
,则该值有效
例如
"'test_test_test" - valid
"test_" - invalid
"_test" - invalid
"test_____test" - invalid
我正在尝试不同的模式将所有这些条件匹配为一个条件,但似乎不适用于例如(“^[\uU]+”)或(“^[\uU]+”)或(“^[\uU]$+”
如果你能帮我解释一下正则表达式,我会非常感激 您可以使用以下代码:
Pattern p = Pattern.compile("^(_\\w*)|(\\w*_{2,}+\\w*)|(\\w*_$)");
Matcher m = p.matcher("te_st_");
System.out.println("Is string invalid: "+ m.matches());
见结果:
有关更多详细信息:最简单的模式是
^[^.]+(?:[^^.]+)*$
,已调整。但它在测试中失败,测试和测试与^[^.+(?:[^.]+)*$
不匹配!对不起,我的错。谢谢