我想解析这个字符串。我想要返回具有.prm的单词,然后是:。之后的所有其他单词。我正在用Java中的Pattern和Matching类挣扎。有人可以请指点我正确的方向吗?Java匹配和解析字符串
This is the statement to remove, CAPTURETHIS.prm: WANT TO CAPTURE THIS MESSAGE TOO!
请帮助
我想解析这个字符串。我想要返回具有.prm的单词,然后是:。之后的所有其他单词。我正在用Java中的Pattern和Matching类挣扎。有人可以请指点我正确的方向吗?Java匹配和解析字符串
This is the statement to remove, CAPTURETHIS.prm: WANT TO CAPTURE THIS MESSAGE TOO!
请帮助
你可以做到这一点在以下方式:
String s="CAPTURETHIS.prm: WANT TO CAPTURE THIS MESSAGE TOO!".
String[] str=s.split(".prm:");
String s1=str[0];
String s2=str[1];
s1为"CAPTURETHIS"
和s2 WANT TO CAPTURE THIS MESSAGE TOO!
。
字符串是动态的,正在加载,并且之前有文本.prm,我需要剥离。你能告诉我如何摆脱CAPTURETHIS.prm所有的东西,而不知道CAPTURETHIS会一直如此吗? – Jarod
如果CAPTURETHIS
决不会包含空格,由至少一个空白字符之前,那么下面的正则表达式会做
.*\s(\S+\.prn:.*)
注意,如果模式something.prn:
在线路出现不止一次这将捕获只有最后一个。
Pattern p = Pattern.compile(".*\\s(\\S+\\.prn:.*)");
Matcher m = p.matcher(inputString);
if (m.matches())
System.out.println(m.group(1));
else
/* no match */;
假设你不希望在“xxxx.prm”是在该行的开始,它应该没有嵌入空白,
Pattern p = Pattern.compile("\\S+\\.prm:.*");
Matcher m = p.matcher(inputString);
if (m.find()) {
matched = m.group();
}
这个发现包括的子:
字符串是matched
的结果。
(我想过使用负查找屁股和其他东西......但我突然意识到,这是不必要的,因为最初的\S+
将是贪婪的。同样,$ ^和锚是不必要的。)
我建议是这样的:
StringBuilder builder = new StringBuilder();
String testString = "CAPTURETHIS.prm: WANT TO CAPTURE THIS MESSAGE TOO!";
String[] splittedByColon = testString.split(":");
for (String word : splittedByColon[0].split(" ")) {
if(word.endsWith(".prm")){
builder.append(word.split(".prm")[0]);
}
}
if(splittedByColon.length > 1)
builder.append(splittedByColon[1]);
return builder.toString();
同Devavrata的答案,但有几行添加删除不需要的声明
String s="This is the statement to remove, CAPTURETHIS.prm: WANT TO CAPTURE THIS MESSAGE TOO!".
String[] str1=s.split(".prm:");
String before=str[0];
String after=str[1];
String[] str2=before.split(" ");
String fileName=str2[str2.length-1];
文件名西港岛线包含CAPTURETHIS和后将包含要TOO捕获此消息!。
你是不是指'String [] matches = text.split(“\\。pm”,2);'? –
不,我不想要任何东西,但CAPTURETHIS.prm和以下部分: – Jarod
@Jodod你说你想要捕获:后面的部分。 – Devavrata