多行正则表达式布局

时间:2017-06-30 12:24:20

标签: regex intellij-idea kotlin

我有一个正则表达式:Regex("((group1)(group2))(group3)")

我想以一种看起来漂亮和清晰的方式对其进行格式化,即:

(
  (group1)
  (group2)
)
(group3)

例如我试过这个:

Regex("("
    +   "(group1)"
    +   "(group2)"
    + ")"
    + "(group3)")     //--> loses the syntax highlighting in Intellij and a bit messy

Regex("""(
           (group1)
           (group2)
         )
         (group3)""") //--> not bad, but not equivalent (adds spaces and \n characters)

有没有办法在保持正则表达式等同于原始版本和语法高亮的同时拥有干净的布局?

1 个答案:

答案 0 :(得分:3)

看起来您仍然可以使用COMMENTS修饰符(或(?x)内嵌版本):

Regex("""(?x)(          # Group 1
              (group1)  # Group 2
              (group2)  # Group 3
             )
             (group3)  # Another group"""

请参阅COMMENTS RegexOption参考:

  

以模式允许空格和注释。

如果#符号在模式中表示文字#符号,则必须对其进行转义。

请注意,即使在字符类中,文字空间也被视为格式化空格。如果您需要匹配文字空间,请转义它们:"""(?x)free\ spacing""""""(?x)[a-zA-Z\ ]+"""