從給定字符串中提取所有「{...}」標記的方便可靠的方法是什麼? (使用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