从给定字符串中提取所有“{...}”标记的方便可靠方法是什么? (使用Java)。
那么,举一个例子:
我说:http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html
我想得到所有“{}”标签;我正在考虑使用Java .split()函数,但不确定正确的正则表达式是什么。
另请注意:标签可以被调用,而不仅仅是tagX!
答案 0 :(得分:3)
我会使用正则表达式来匹配它。这样的事情可能对你的表达有用:
String regex = "\\{.*?\\}";
因为这将“不情愿地”匹配任何围绕它的{和}的子字符串。 .*?
使它找到{和}之间的任何字符,但很不情愿,因此它与较大的字符串不匹配:
{tag1}/path/{tag2}/else/{tag3}
这将是一场“贪婪”的比赛。请注意,正则表达式中的花括号需要使用双反斜杠进行转义,因为花括号在正则表达式中具有单独的含义,如果要指示花括号String,则需要将其转义。
如,
public static void main(String[] args) {
String test = "http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html";
String regex = "\\{.*?\\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
输出为:
{tag1}
{tag2}
{tag3}
您可以在此处详细了解正则表达式: Oracle Regular Expressions Tutorial
更详细的信息,请点击此处: www.regular-expressions.info/tutorial