我需要将多个正则表达式放在一个字符串中,然后将其解析为单独的正则表达式。如下所示
regex1<!>regex2<!>regex3
问题是我不确定哪个分隔符最好用于分隔表达式代替示例中显示的<!>
,以便我可以在解析它时安全地分割字符串。
约束是,我不能在多行中创建字符串或使用xml或json字符串。因为这个表达式字符串应该很容易配置。
期待任何建议。
编辑:
问:为什么必须是单个字符串?
A:系统有一个配置管理器,可以从属性文件加载配置。属性包含
之类的行com.some.package.Class1.Field1: value
com.some.package.Class1.Expressions: exp1<!>exp2<!>exp3
无法在属性文件中的多行中写入值。这就是原因。
答案 0 :(得分:2)
最好的方法是使用无效正则表达式作为分隔符,例如**
因为如果它在普通的正则表达式中使用它将无效并且会抛出异常{注意:{ {1}}有效}
++
现在您可以使用此正则表达式将其拆分
regex1+"**"+regex2
以下是无效正则表达式列表
(?<!\\\\)[*][*](?![*])
------- -----
| |->to avoid matching pattern like "A*"+"**"+"n+"
|->check if * is not escaped
)(?<!\\\\)[*][*](?![*])
)拆分时,您需要检查它们是否已转义
(?<!\\\\)[?][?](?![?])
答案 1 :(得分:1)
最佳分隔符取决于您的要求。但是为了最佳实践,请使用特殊字符的间隔,以便最大限度地减少这种干扰的可能性 像
答案 2 :(得分:0)
我觉得它对你有用的东西
首先,您必须使用单个特殊字符替换标记内容,然后拆分
String inputString="regex1<!>regex2<!>regex3";
String noHTMLString = inputString.replaceAll("\\<.*?>","-");
String[] splitString1 = (noHTMLString.split("[-]+"));
for (String string : splitString1) {
System.out.println(string);
}