2013-04-27 84 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("#"));