我正在尝试拆分一个包含多个分隔符的字符串,但首先要检查该字符串是否满足正则表达式,然后基于它进行拆分。example:- the teststring将按特定顺序包含://、:、@、:、/这些字符,我需要首先检查给定的字符串是否满足模式,如果满足,然后拆分它。字符串中的其他字符也可以包含这些字符,但我需要根据这些字符的顺序进行拆分://,:,@,:/
String testString = "aman://jaspreet:raman!@127.0.0.1:5031/test";
String[]tokens = testString.split("://|\\:|@|\\:|\\/");
for(String s:tokens) {
System.out.println(s);
}
在上面我已经尝试过正则表达式拆分,但是没有通过按顺序检查来拆分。它只检查字符串中是否存在任何给定的正则表达式字符,然后根据它进行拆分。
1条答案
按热度按时间cwtwac6a1#
如果你先验证模式,那么你就不应该这么做
split()
之后。使用捕获组收集已验证的数据。e、 在一个简单的例子中,
foo@bar
,带分隔符@
,您将使用^([^@]+)@(.+)$
,即匹配和捕获最多@
,匹配但不捕获@
,然后匹配并捕获其余部分:对于问题中的匹配,宽松模式可以是:
然后使用上面的代码,但是使用:
要进行更严格的匹配,请更换
.*?
具有只匹配允许字符的模式,例如。[^:]+
如果不能为空且不能包含冒号。或者,您可以使用
URI
类来分析url字符串。