2013-04-27 149 views
-3

我必须得到包含在符号#(String)#之间的字符串。字符串#xxx的Java匹配格式#

我该如何实现它?

+1

是否有任何措施来解决此问题?如果您告诉我们迄今为止已尝试的内容,我们将更愿意回答您的问题。 (提问更好的问题的有用链接:[问],[常见问题解答]) – Doorknob 2013-04-27 12:31:28

+0

我尝试了[\\ s \\ o00A0] {2,} | [[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]工作 – Sagar 2013-04-27 12:32:49

+0

只需一点研究就能解决您的问题。 – fareed 2013-04-27 12:48:17

回答

3

substring方法你可以使用正则表达式是这样的:

Pattern p = Pattern.compile("#(.*?)#"); 
Matcher m = p.matcher(yourString); 
System.out.println(m.find() ? m.group(1) : "No match"); 

或者,你可以通过#分裂:

String[] tokens = yourString.split("#"); 
System.out.println(tokens.length >= 3 ? tokens[1] : "No match"); 

这些都会都获得第一个标记,即如果哟你有this#is a#string#it is stringy#okay它会返回is a。如果您需要它从第一个#到最后一个匹配,您可以通过删除?(延迟匹配符号)来修改正则表达式。

如果你想得到所有的令牌,只需要在第二个例子中打印所有的值,而不是在第二个索引处打印所有的值。

+0

@Pshemo会打印每一个其他的匹配,这可能不是OP想要的 – Doorknob 2013-04-27 12:44:59

+0

然后考虑'if(m.find())'。 – Pshemo 2013-04-27 12:45:50

+0

@Pshemo完成:) – Doorknob 2013-04-27 12:46:52

2

尝试indexOfString class.

String str = "#(String)#"; 
String result = str.substring(str.indexOf("#")+1 , str.lastIndexOf("#"));