当前位置: 首页 > 知识库问答 >
问题:

java正则表达式模式不封闭字符类

林鸿彩
2023-03-14

我需要一些帮助。我得到:

Caused by: java.util.regex.PatternSyntaxException: Unclosed character class near index 24
^[a-zA-Z└- 0-9£µ /.'-\]*$
                        ^
        at java.util.regex.Pattern.error(Pattern.java:1713)
        at java.util.regex.Pattern.clazz(Pattern.java:2254)
        at java.util.regex.Pattern.sequence(Pattern.java:1818)
        at java.util.regex.Pattern.expr(Pattern.java:1752)
        at java.util.regex.Pattern.compile(Pattern.java:1460)
        at java.util.regex.Pattern.<init>(Pattern.java:1133)
        at java.util.regex.Pattern.compile(Pattern.java:823)

这是我的密码:

String testString = value.toString();

Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'-\\]*$");
Matcher m = pattern.matcher(testString);

我必须对一些文件使用unicode值,因为我使用的是xhtml。

任何帮助都会很好!

共有2个答案

微生阳平
2023-03-14

很难说你想要实现什么,但我能在你的正则表达式中看到一些奇怪的东西:

  • 您已打开角色类,但从未关闭它。相反,您使用了\\],使]成为普通字符。
华子昂
2023-03-14

假设要匹配\-而不是]

Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'\\\\-]*$");

您需要双重转义您的反斜杠,因为\也是正则表达式中的转义字符。因此\\]转义了java的反斜杠,而不是regex的反斜杠。您需要添加另一个java-转义\,以便regex-转义您的第二个java-转义\

因此,java转义后的\\\变为\\,然后regex转义为\

-移动到序列末尾意味着它被用作字符,而不是Pshemo指出的范围运算符

 类似资料:
  • 问题内容: 我需要一些帮助。我越来越: 这是我的代码: 我必须使用unicode值,因为我正在使用xhtml。 任何帮助将是巨大的! 问题答案: 假设您要匹配,而不是: 您需要加倍转义反斜杠,正则表达式中的转义字符也是如此。因此,对于Java而不是对正则表达式,可以使用反斜杠。您需要添加另一个java- escaped 以便正则表达式-escape您的第二个Java-escaped 。 因此,在J

  • 问题内容: 我需要这件事的帮助。查看以下正则表达式: 我想查找这样的词:“自制”,“ aaaa-bbb”而不是“ aaa-bbb”,而 不是 “ aaa–aa–aaa”。基本上,我想要以下内容: 单词-连字符-单词。 它适用于所有内容,但该模式会通过:“ aaa–aaa–aaa”,但不应通过。哪种正则表达式适用于此模式? 问题答案: 可以从表达式中删除反斜杠: 下面的代码应该工作 请注意,您可以使

  • 问题内容: 当匹配某些字符(例如换行符)时,可以使用正则表达式“ \\ n”或仅使用“ \ n”。例如,以下将字符串拆分为行数组: 但是以下内容同样适用: 我的问题: 上面两个是 完全 一样地工作,还是有细微的差别?如果是后者,能否举个例子,说明您得到不同的结果? 还是仅在[可能/理论]表现上有所不同? 问题答案: 在当前情况下没有区别。通常的字符串转义序列是在单个反斜杠的帮助下形成的,然后有效的

  • 本文向大家介绍正则表达式“ [[X?+]””元字符Java,包括了正则表达式“ [[X?+]””元字符Java的使用技巧和注意事项,需要的朋友参考一下 可能量词[X?+]匹配一次存在的X或根本不存在的X。 示例 输出结果

  • 主要内容:实例下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为: 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或

  • 本文向大家介绍字符类:减法-Java正则表达式,包括了字符类:减法-Java正则表达式的使用技巧和注意事项,需要的朋友参考一下 您可以从另一个范围中减去一个范围,并将其用作新范围。您可以使用字符类的两个变体来实现这一点,即取反和交集。 例如,范围[al]和[^ eh]的交集给您字符a至l作为愤怒减去字符[eh] 示例 输出结果