分隔多重正则表达式的最佳分隔符

Sam*_*ron 8 java regex parsing delimiter

我需要将多个正则表达式放在一个字符串中,然后将其解析为单独的正则表达式.如下

regex1<!>regex2<!>regex3
Run Code Online (Sandbox Code Playgroud)

问题是我不确定哪个分隔符最好用于分隔表达式代替<!>示例中的表达式,以便我可以在解析它时安全地分割字符串.

约束是,我不能在多行中创建字符串或使用xml或json字符串.因为这个表达式字符串应该很容易配置.

期待任何建议.

编辑:

问:为什么它必须是单个字符串?

答:系统有一个配置管理器,可以从属性文件加载配置.并且属性包含类似的行

com.some.package.Class1.Field1: value
com.some.package.Class1.Expressions: exp1<!>exp2<!>exp3
Run Code Online (Sandbox Code Playgroud)

无法在属性文件中的多行中写入值.这就是为什么.

Ani*_*dha 2

最好的方法是使用无效的正则表达式作为分隔符,例如**因为如果在正常的正则表达式中使用它,它将不起作用并且会抛出异常{注意:++有效}

regex1+"**"+regex2
Run Code Online (Sandbox Code Playgroud)

现在你可以用这个正则表达式来分割它

(?<!\\\\)[*][*](?![*])
-------         -----
   |              |->to avoid matching pattern like "A*"+"**"+"n+"
   |->check if  * is not escaped
Run Code Online (Sandbox Code Playgroud)

以下是无效正则表达式的列表

  • [+
  • (+
  • [*
  • (*
  • [?
  • *+
  • **(分隔符为(?<!\\\\)[*][*](?![*])
  • ??(分隔符为(?<!\\\\)[?][?](?![?])

分裂时你需要检查它们是否被转义

(?<!\\\\)delimiter
Run Code Online (Sandbox Code Playgroud)