如何使用regex获取<opening><scotch-game><fried-liver-attack>字符串的各个标记。因此,输出应该是以下三个字符串:
编辑:
这不是一个合适的xml。
发布于 2014-04-23 22:30:46
潘嘉,你想用雷吉斯做什么?这段代码可以做你想做的事。
List<String> matchList = new ArrayList<String>();
try {
Pattern regex = Pattern.compile("<([^>]*?)>");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group(1));
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}模式本身非常简单:<([^>]*?)>
我们匹配一个开头的<,然后圆括号惰性地捕获到第1组中没有[^>]*?大括号的任何字符,最后为了更好的度量,我们匹配了一个结束>,以确保我们有一个完整的令牌。
Java代码只是构建了一个包含我们的Group 1捕获的列表,这正是您想要的。
请注意,这不会很好地处理<nested <tokens>>。那将是另一次讨论。
发布于 2014-04-23 17:56:48
这很简单。
String str = "<opening><scotch-game><fried-liver-attack>";
String[] tokens = str.substring(1, str.length() - 1).split("><");发布于 2014-04-23 18:46:22
这可能会有帮助
public class PracticeOne
{
public static void main(String args[])
{
String s="<opening><scotch-game><fried-liver-attack>";
StringTokenizer st=new StringTokenizer(s,"<>");
ArrayList<String> al=new ArrayList<String>();
while(st.hasMoreElements())
{
String element=(String)st.nextElement();
if(!element.equals(""))
al.add(element);
}
System.out.println(al);
}
}https://stackoverflow.com/questions/23251768
复制相似问题