正则表达式提取部分作品

时间:2011-06-22 11:53:37

标签: java regex

我有一个像blahROOT这样的词。我如何使用正则表达式在java中提取blah。我有许多以ROOT结尾的单词。我只想提取第一个单词。

4 个答案:

答案 0 :(得分:3)

String blah = "blahROOT".substring(0, "blahROOT".indexOf("ROOT"));

答案 1 :(得分:3)

试试这个正则表达式:

([\w\d\s]+)ROOT

这样的事情应该有效:

Pattern p = Pattern.compile("([\\w\\d\\s]+)ROOT");
Matcher m = p.matcher(mystr);
String word = null;
if (m.find()) word = m.group(0);

答案 2 :(得分:3)

你必须为此使用正则表达式吗?

如果您的所有单词都以ROOT结尾,您可以这样做:

String s = "blahROOT";
s.substring(0, s.length() - "ROOT".length());

答案 3 :(得分:0)

如果您有"blahROOT fooROOT barROOTS"之类的字符串,并且想要提取blahfoo但不提取bar(因为它以ROOT结尾 S ),试试这个表达式:(\w+)ROOT\b。请注意,如果单词以ROOT完全结束(因此ROOT),它会匹配\b之前的任何部分。

然后使用这样的东西:

Pattern p = Pattern.compile("(\\w+)ROOT\\b");
Matcher m = p.matcher("blahROOT fooROOT barROOTS");

while (m.find()) { //loop through all matches
 String part = m.group(1); //the word parts you look for, note that group 0 represents the entire match
}