从给定字符串中提取所有“{...}”标记的方便可靠的方法是什么? (使用Java)。从Java中的字符串文字中提取重复模式集合
所以,举个例子: 说我有:http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html
我想所有的“{}”标签;我在想使用Java .split()函数,但不知道是什么正确的正则表达式将是这个
还要注意:!标签可以被称为什么,而不仅仅是Tagx广告
从给定字符串中提取所有“{...}”标记的方便可靠的方法是什么? (使用Java)。从Java中的字符串文字中提取重复模式集合
所以,举个例子: 说我有:http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html
我想所有的“{}”标签;我在想使用Java .split()函数,但不知道是什么正确的正则表达式将是这个
还要注意:!标签可以被称为什么,而不仅仅是Tagx广告
我会用正则表达式这种事情是这样的搭配可以为你的表达工作:
String regex = "\\{.*?\\}";
因为这将“不情愿地”匹配任何具有{和}围绕它的子字符串。该.*?
使得它找到{和},但不情愿,所以它不匹配字符串更大之间的任何字符:
{tag1}/path/{tag2}/else/{tag3}
这将是一个“贪婪”的比赛。请注意,正则表达式中的花括号需要用双反斜杠进行转义,因为大括号在正则表达式内部具有单独的含义,并且如果要指示大括号字符串,则需要将其转义。
例如,
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
'“{[^ {}] *}“'可能会更好? (逃跑被忽略) – Kent
@Kent:'“{[^ {}] *}”'对我来说看起来不合法。为什么不测试它? –
@Hovercraft谢谢,效果很好! – Larry