提取相同字符的2个字符之间的字符串

时间:2016-04-26 12:55:18

标签: java string

我理解如何在[和],或()等两种不同类型的字符串之间提取字符串......

但我不知道的是如何获得1个字符之间的多个/所有字符串。 例如:

the *big* brown fox *jumps over* the *lazy* **dog**

它应返回“*”:

big
jumps over
lazy

它也应该返回“**”:

dog

所有库,正则表达式模式等都不支持这样的功能。

3 个答案:

答案 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());
}