假設我有一個 string "lore epsum dimsum ${ITEM_NAME} wonton kimchi"。
我創建了一個可以${ITEM_NAME}從字串中的任何位置提取的正則運算式。該正則運算式是,.{(.*.*)}。
如何自定義此正則運算式以僅提取${}is之間的字串ITEM_NAME?
uj5u.com熱心網友回復:
使用{(.*.*)}模式,您可以提取最左側{和最右側之間的任何子字串}。
你需要
\$\{([^{}]*)\}
在 Java 中:
String regex = "\\$\\{([^{}]*)\\}";
請參閱正則運算式演示。
如果明確要求只匹配內部的字母數字/下劃線字符${...},則可以替換[^{}]*為\w /\w*模式(將 Java 字串文字中的反斜杠加倍)。
請參閱Java 演示:
import java.util.*;
import java.util.regex.*;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
String text = "lore epsum dimsum ${ITEM_NAME} wonton kimchi ${ITEM_NAME_2}";
Pattern p = Pattern.compile("\\$\\{([^{}]*)}");
Matcher m = p.matcher(text);
List<String> res = new ArrayList<>();
while(m.find()) {
res.add(m.group(1));
}
System.out.println(res);
}
}
輸出:
[ITEM_NAME, ITEM_NAME_2]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361862.html
上一篇:正則運算式匹配模式之后的任何內容
