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)
无法在属性文件中的多行中写入值.这就是为什么.
最好的方法是使用无效的正则表达式作为分隔符,例如**
因为如果在正常的正则表达式中使用它,它将不起作用并且会抛出异常{注意:++
有效}
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)