分隔多个正则表达式的最佳分隔符
Posted
技术标签:
【中文标题】分隔多个正则表达式的最佳分隔符【英文标题】:Best delimiter to separate multipe regex 【发布时间】:2013-06-29 09:27:34 【问题描述】:我需要将多个正则表达式放在一个字符串中,然后将其解析为单独的正则表达式。如下所示
regex1<!>regex2<!>regex3
问题是我不确定哪个分隔符最适合用来分隔表达式,而不是示例中显示的<!>
,以便在解析字符串时可以安全地拆分字符串。
约束是,我不能将字符串分成多行或使用 xml 或 json 字符串。因为这串表达式应该很容易配置。
期待任何建议。
已编辑:
问:为什么必须是单个字符串?
答:系统有一个配置管理器,可以从属性文件中加载配置。并且属性包含像
这样的行com.some.package.Class1.Field1: value
com.some.package.Class1.Expressions: exp1<!>exp2<!>exp3
无法在属性文件的多行中写入值。这就是为什么。
【问题讨论】:
为什么必须是单个字符串? 更新了您问题的答案 +1 个有趣的问题 @Samiron ans 中有一些小错误。请查看编辑 【参考方案1】:最好的方法是使用 invalid 正则表达式作为分隔符,例如 **
因为如果在普通正则表达式中使用它将不起作用并且会引发异常NOTE:++
有效
regex1+"**"+regex2
现在你可以用这个正则表达式拆分它
(?<!\\\\)[*][*](?![*])
------- -----
| |->to avoid matching pattern like "A*"+"**"+"n+"
|->check if * is not escaped
以下是无效正则表达式列表
[+ (+ [* (* [? *+ **(分隔符为(?<!\\\\)[*][*](?![*])
)
??(分隔符为(?<!\\\\)[?][?](?![?])
)
拆分时需要检查它们是否被转义
(?<!\\\\)delimiter
【讨论】:
它不适用于 regex1 = [\d]* 和 regex2 =[-]+ (or any regex) ,所以它会形成如下形式: [\d]***[- ]+,拆分会产生 [\d] 和 *[-]+【参考方案2】:我认为它对你有帮助
首先你必须用单个特殊字符替换标签内容,然后拆分
String inputString="regex1<!>regex2<!>regex3";
String nohtmlString = inputString.replaceAll("\\<.*?>","-");
String[] splitString1 = (noHTMLString.split("[-]+"));
for (String string : splitString1)
System.out.println(string);
【讨论】:
啊..<!>
不是我决定使用的东西。我需要一个建议来替换它【参考方案3】:
最佳分隔符取决于您的要求。但是为了最佳实践,请使用特殊字符的序列,以便这种序列出现的可能性很小 喜欢
$$**##$$ #$%&&%$#【讨论】:
以上是关于分隔多个正则表达式的最佳分隔符的主要内容,如果未能解决你的问题,请参考以下文章