Java 我在使用正则表达式时遇到了问题,我不知道为什么它不起作用
有人能帮我把这个正则表达式转换成Java吗?我不确定它为什么不起作用,我已经阅读了文档并为Java制作了它,但它不适用于Java。然而,它在PerlRegex测试网站上运行良好Java 我在使用正则表达式时遇到了问题,我不知道为什么它不起作用,java,regex,Java,Regex,有人能帮我把这个正则表达式转换成Java吗?我不确定它为什么不起作用,我已经阅读了文档并为Java制作了它,但它不适用于Java。然而,它在PerlRegex测试网站上运行良好 (.*?);[01]: 我基本上有: expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1 我要做的就是将名称列表expiem,2pfemfrance等放入字符串数组中 是的,这是我的代码:builder.toStr
(.*?);[01]:
我基本上有:
expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1
我要做的就是将名称列表expiem
,2pfemfrance
等放入字符串数组中
是的,这是我的代码:builder.toString()
包含了我提到的内容
Pattern pattern = Pattern.compile("h=(.*)");
Matcher match = pattern.matcher(builder.toString());
if( match.find() ) {
this.userlist = match.group(1).split("(.*?);[01]:");
this.loaded = true;
this.index = 0;
}
顺便说一下,match.group(1)
就是我发布的字符串,它就是
expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1
(我通过在控制台上打印出来进行了测试)String name=“expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1”
字符串[]nameArray=names.split(“:”);
列表名称列表=新的ArrayList();
for(字符串名称:nameArray){
String[]tupel=name.split(“;”);
nameList.add(tupel[0]);
}
这不是一个很酷的正则表达式解决方案,但我很容易理解。基本上,您可以将长字符串拆分为较小的字符串,这些字符串由以下内容分隔:
然后使用分隔符拆分小字符串;并将该结果的第一个条目(即名称)添加到列表中。String names=“expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1”
字符串[]nameArray=names.split(“:”);
列表名称列表=新的ArrayList();
for(字符串名称:nameArray){
String[]tupel=name.split(“;”);
nameList.add(tupel[0]);
}
这不是一个很酷的正则表达式解决方案,但我很容易理解。基本上,您可以将长字符串拆分为较小的字符串,这些字符串由以下内容分隔:
然后使用分隔符拆分小字符串;并将该结果的第一个条目(即名称)添加到列表中。您不需要将字符串捕获作为拆分表达式的一部分:它会吃掉您的字符串 您声明perl版本可以工作,但是这要求输入字符串以
:
结尾。如果没有,则需要在:
之后添加一个?
,以指定它是可选的
尝试:
您不需要将字符串捕获作为拆分表达式的一部分:它会吃掉您的字符串 您声明perl版本可以工作,但是这要求输入字符串以
:
结尾。如果没有,则需要在:
之后添加一个?
,以指定它是可选的
尝试:
使用此代码
String input = "h=expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1";
Pattern pattern = Pattern.compile("h=(.*)");
Matcher match = pattern.matcher(input);
if( match.find() ) {
String substr = match.group(1);
System.out.println(substr);
String[] userlist = substr.split(";[01]:?");
System.out.println(Arrays.toString(userlist));
}
你得到
expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1
[expiem, 2pfemfrance, runiora, stallker420, phoenixblaze0916, myothorax]
使用此代码拆分字符串的相关regexp是“”;[01]:?”
String input = "h=expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1";
Pattern pattern = Pattern.compile("h=(.*)");
Matcher match = pattern.matcher(input);
if( match.find() ) {
String substr = match.group(1);
System.out.println(substr);
String[] userlist = substr.split(";[01]:?");
System.out.println(Arrays.toString(userlist));
}
你得到
expiem;0:2pfemfrance;1:runiora;1:stallker420;1:phoenixblaze0916;1:myothorax;1
[expiem, 2pfemfrance, runiora, stallker420, phoenixblaze0916, myothorax]
分割字符串的相关regexp是“”;[01]:?”
两个问题:
- 您的正则表达式正在捕获您的目标-正则表达式应该用于分隔符,而不是您想要保留的内容
- 你的代码太多了。你只需要一条线李>
String[] names = builder.toString().split(";[01]:");
两个问题:
- 您的正则表达式正在捕获您的目标-正则表达式应该用于分隔符,而不是您想要保留的内容
- 你的代码太多了。你只需要一条线李>
String[] names = builder.toString().split(";[01]:");
你能发布你已经尝试过的吗?例如,您试图使用regex的实际Java代码。这不会影响完整字符串,只影响字符串的一部分,因此根据您将regexp放在何处,您的成功率会有所降低或提高。再多展示一下你使用的代码你能发布一下你已经尝试过的吗?例如,您试图使用regex的实际Java代码。这不会影响完整字符串,只影响字符串的一部分,因此根据您将regexp放在何处,您的成功率会有所降低或提高。更多地展示一下你所使用的代码。你不需要在最后增加一个
?
来去掉最后一个;1
?@ValarDohaeris请注意,OP在输入字符串的末尾没有一个:
,而您的代码没有。您不需要在末尾添加一个?
,以去掉最后一个;1
?@ValarDohaeris请注意,OP在输入字符串的末尾没有:
,而您的代码有