我有一个正则表达式: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)

在保持正则表达式与原始和语法高亮等效的同时,是否可以采用整洁的布局?

最佳答案

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

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

请参见 COMMENTS RegexOption参考:



如果#符号表示模式中的文字#符号,则必须转义。

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

07-28 02:22
查看更多