我理解如何在[和],或()等两种不同类型的字符串之间提取字符串......
但我不知道的是如何获得1个字符之间的多个/所有字符串。 例如:
the *big* brown fox *jumps over* the *lazy* **dog**
它应返回“*”:
big
jumps over
lazy
它也应该返回“**”:
dog
所有库,正则表达式模式等都不支持这样的功能。
答案 0 :(得分:5)
这个正则表达式:
[\*]+([a-z ]*)[\*]+
将符合您的要求。请参阅this。
[\*]+
匹配1个或多个*
s。([a-z ]*)
匹配a-z和空格之间的字符,并返回该字符。现在,自从安迪特纳指出它也与dog
中的*dog*********
相匹配时,您可以这样做:
[\*]{1,2}([a-z ]*)[\*]{1,2}
这会使*
在1到2之间匹配。(请参阅this)您可以将其更改为任意范围,但请注意{1,3}
将匹配1,2或3次,而且不仅仅是1到3次。
答案 1 :(得分:0)
String str="the *big* brown fox *jumps over* the *lazy* **dog**"
str = str.replace("**", "*");
然后执行您正在使用的提取方法
答案 2 :(得分:0)
String test = "the *big* brown fox *jumps over* the *lazy* **dog**";
StringTokenizer st = new StringTokenizer(test,"*");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}