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

时间:2014-07-20 21:13:30

标签: java regex

我目前正试图处理" leetspeak"在正则表达式。我有一个带有一封信的课,它将充满可能的" leet"其中的替代品。然而,其中一些替代品的长度是多个字符,而且我很难弄清楚如何在课堂中包含这些字符。例如

[kK"|<"]

现在我明白引号并不是那样的,但我无法找到一种方法来匹配k,K或|&lt;没有它匹配|或者&lt;单独

我的问题是如何在一个类中包含一串字符?

另外,我想确保对它进行字面处理,因此我需要在解决方案的某处包含\ Q和\ E.

3 个答案:

答案 0 :(得分:2)

您可以为kK使用一个类,然后单独匹配|<

"[kK]|\\|<"

如果您想要加入\Q\E ...

"[kK]|\\Q|<\\E"

答案 1 :(得分:0)

"k|K|\\|<"

管道允许您“或”多字符串并使用反斜杠转义它允许您在此类字符串中包含管道。如果字符串在引号中,则需要使用另一个反斜杠转义反斜杠,因此反斜杠可以在正则表达式中放置。

答案 2 :(得分:0)

使用此正则表达式:

[kK]|\|<

在Java中,您需要转义反斜杠,因此这将成为

[kK]|\\|<

选项2:逃避leet

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

<强>解释

  • 字符类[kK]匹配一个字符kK
  • |
  • \|<匹配|<