使用正则表达式如何在其他字符串中查找子字符串。这是两个字符串:
String a= "?drug <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/possibleDiseaseTarget> ?disease .";
String b = "?drug <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/molecularWeightAverage> ?weight . ?drug <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/possibleDiseaseTarget> ?disease";
我想只匹配
<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/possibleDiseaseTarget>
答案 0 :(得分:0)
这里没有必要使用正则表达式,只需这样做:
String substr = "<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/possibleDiseaseTarget>";
System.out.println(b.contains(substr)); // prints true
System.out.println(a.contains(substr)); // prints true
答案 1 :(得分:0)
由于这不是HTML,任何XML / HTML解析器无法帮助您,您可以尝试使用regex。您似乎想要找到表格中的文字
?drug <someData> ?disease
要描述这样的文本正则表达式,您需要转义?
(它是代表 optional 的正则表达式特殊字符之一 - 零或一次 - 量词)所以你需要放置它之前的\
(在String中需要写成"\\"
)
部分<someData>
也可以写成<[^>]>
,这意味着,
<
,>
之后,>
匹配?drug <someData> ?disease
的正则表达式可以写成
"\\?drug <[^>]+> \\?disease"
但由于我们只对代表<[^>]+>
的{{1}}部分感兴趣,因此我们需要让正则表达式group成立。简而言之,如果我们用括号括起正则表达式的某些部分,那么这个正则表达式部分匹配的字符串将放在我们称为group的内容中,因此我们将能够从该组中获得一部分。总之,最终的正则表达式看起来像
<someData>
可以像
一样使用"\\?drug (<[^>]+>) \\?disease"
^^^^^^^^^---first group,
将产生输出
String a = "?drug <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/possibleDiseaseTarget> ?disease .";
String b = "?drug <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/molecularWeightAverage> ?weight . ?drug <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/possibleDiseaseTarget> ?disease";
Pattern p = Pattern.compile("\\?drug (<[^>]+>) \\?disease");
Matcher m = p.matcher(a);
while (m.find()) {
System.out.println(m.group(1));
}
System.out.println("-----------");
m = p.matcher(b);
while (m.find()) {
System.out.println(m.group(1));
}