2014-03-12 59 views
0

如何從字符串中獲取「」中的第一個和第二個文本? 我可以indexOf做到這一點,但這實在是無聊(( 比如我有解析像一個字符串:"aaa":"bbbbb"perhapsSomeOtherText 我倒要獲得aaabbbbb用正則表達式的幫助 - 這將幫助我使用它在switch語句,將大大簡化我的應用程序/第一和第二正切正則表達式

+1

如何在詢問前首先_trying learn_regex? – devnull

回答

1

如果你的所有,是冒號分隔字符串只是把它分解:

String str = ...; // colon delimited 
String[] parts = str.split(":"); 

注意,那split()接收正則表達式,每次compilies它。爲了提高代碼的性能,您可以使用Pattern如下:

private static Pattern pColonSplitter = Pattern.compile(":"); 

// now somewhere in your code: 
String[] parts = pColonSplitter.split(str); 

然而,如果你想使用模式匹配,並在更復雜的案件串片段的提取,這樣做就像下面:

Pattert p = Patter.compile("(\\w+):(\\w+):"); 
Matcher m = p.matcher(str); 
if (m.find()) { 
    String a = m.group(1); 
    String b = m.group(2); 
} 

注意定義捕獲組的括號。

+0

謝謝你,我不知道關於組(枚舉)!這是我真正需要的) – curiousity

+0

Alex,我將正則表達式改爲(「(\\ w +):(\\ d +):」);爲了找到像「aaa」:「123」fdfff字符串,但它不工作 - 我在正則表達式模式中做了什麼錯誤? – curiousity

+0

好吧,所以第二個片段只匹配數字。它不符合你的例子,但可能這是你需要的。所以,祝你好運。 – AlexR

0

有幾種方法可以做到這一點 使用的StringTokenizer或掃描儀與UseDelimiter方法

1
String str = "\"aaa\":\"bbbbb\"perhapsSomeOtherText"; 

Pattern p = Pattern.compile("\"\\w+\""); // word between "" 
Matcher m = p.matcher(str); 
while(m.find()){ 
    System.out.println(m.group().replace("\"", "")); 
} 

輸出:

aaa 
bbbbb 
+0

你的代碼不會編譯,即使它會,它會給出'「:」'。 – steffen

+0

@steffen重新檢查它 –

+0

這更好:) – steffen

1

這樣的事情?

Pattern pattern = Pattern.compile("\"([^\"]*)\""); 
Matcher matcher = pattern.matcher("\"aaa\":\"bbbbb\"perhapsSomeOtherText"); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

輸出

aaa 
bbbbb 
相關問題