gpt4 book ai didi

java - java的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:28 25 4
gpt4 key购买 nike

我正在尝试编写正则表达式。要求是:表达式应该用西里尔字母书写,也可以包含任何数字和任何符号,如 !@#$%^&*() 等,仅排除拉丁字母。我的问题是我的表达式不包含所有这些特殊符号,如 !@#$... 我的表达式是 ^[а-яА-ЯёЁa0-9]+$。我做测试:

@Test
public void matchAnEmptyStringOrASpecificOtherPattern() {

String input = "";
// ^[а-яА-ЯёЁa0-9]+$
assertTrue( Pattern.compile("^[а-яА-ЯёЁa0-9]+$").matcher(input).find()

);

如何在我的模式中包含这些符号。

最佳答案

您不能使用带有西里尔字符的范围(例如 [а-я])。

如果你只想匹配 !@#$ 集合中的西里尔字符、数字和字符,你可能想要的是:

assertTrue(
Pattern.compile(
// | cyrillic and supplementary blocks
// | | the rest
"(\\p{InCyrillic}|\\p{InCyrillic_Supplementary}|[!@#$0-9])+"
)
.matcher(input)
// match all input (instead of "find" with "^" and "$")
.matches()
);

示例

Pattern p = Pattern.compile(
"(\\p{InCyrillic}|\\p{InCyrillic_Supplementary}|[!@#$0-9])+"
);

System.out.println(p.matcher("я!Я@#$1").matches()); // true
System.out.println(p.matcher("я!Я@#$abc").matches()); // false, has western letters

关于java - java的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com