Java 捕获正则表达式类中的完整字符串

Java 捕获正则表达式类中的完整字符串,java,regex,Java,Regex,我目前正在尝试处理regex中的“leetspeak”。我有一个带字母的类,其中将填充可能的“leet”替代项。然而,其中一些备选方案有多个字符长,我很难弄清楚如何在类中包含这些字符。比如说 [kK"|<"] [kK”|“k | k | \\\\\\\\\\\\\\使用以下正则表达式: [kK]|\|< [kK]|\|< 在Java中,您需要避开反斜杠,因此 [kK]|\\|< [kK]|\\|< 选项2:避开leet 正如您自己所建议的,使用\\Q some lee

我目前正在尝试处理regex中的“leetspeak”。我有一个带字母的类,其中将填充可能的“leet”替代项。然而,其中一些备选方案有多个字符长,我很难弄清楚如何在类中包含这些字符。比如说

[kK"|<"]
[kK”|
“k | k | \\\\\\\\\\\\\\使用以下正则表达式:

[kK]|\|<
[kK]|\|<
在Java中,您需要避开反斜杠,因此

[kK]|\\|<
[kK]|\\|<
选项2:避开leet

正如您自己所建议的,使用
\\Q some leet\\E
可以匹配任何内容,而无需担心可能需要转义特殊的正则表达式字符

解释

  • 字符类
    [kK]
    匹配一个字符,该字符是
    k
    k
  • |

  • \\\\您可以为
    k
    k
    使用一个类,然后匹配
    \\”。如何在类中包含这些内容“您不能,这是一个字符类,而不是字符串。您可以尝试使用类似于
    “k | k |\\\\\\\\\\”的东西。看起来是这样的。请看是的,您可以使用
    \Q…\E
    转义任何序列(在Java中变成了
    \\Q….\\E
    )我认为
    I
    修饰符对他来说通常不是一个好主意,因为大写的东西通常不会用小写,反之亦然。
    [kK]|\\|<
    
    "[kK]|\\|<"
    
    "[kK]|\\Q|<\\E"