2011-03-21 31 views
0

我有一段文字,我想要在每行遇到「WORD」時在 的行首並且沒有字符跟隨它。我用 text.split(「WORD」),只有它不好,因爲例如%hi hi WORD不應該被split方法匹配,現在它匹配了。 我嘗試使用「^ WORD」,但只匹配整個文本開頭的WORD。在行的開頭分割一個字符串

任何想法我該怎麼做? BTW我用java,如果該事項

+1

您可以發佈樣本輸入文本嗎? – 2011-03-21 15:07:07

+0

你的意思是,如果你自己看到WORD在一行上(即之前沒有字符,因爲它在開頭,並且在它後面沒有字符),你想分割_by WORD_?或者用WORD分割,除非它出現在文件最後的一行(實際上沒有字符後面)?或者你想要別的東西分裂?我很困惑。 – 2011-03-21 15:11:33

+0

它就像你說的,當它自己排隊的時候 – yot 2011-03-21 15:33:04

回答

5

使用multiline modifier(其爲Pattern.MULTILINE標誌的正則表達式效果相同):在開始

text.split("(?m)^WORD"); 

改變的^意義」的字符串「」在行「的開頭。

+0

哦,好多了! – 2011-03-21 15:09:37

+0

嗨。它不適合我。我仍然匹配sdfsdWORD例如 – yot 2011-03-21 15:33:34

+0

@yot:適用於我... http://www.ideone.com/VUCxH – Tomalak 2011-03-21 17:31:43

0

在Tomalak發佈時,使用多行修飾符。如果你想保留WORD本身,你也可以這樣做:

Pattern p = Pattern.compile("(^WORD .*$)", Pattern.MULTILINE); 
String input = "WORD something. And WORD not at beginning.\nWORD something."; 
Matcher m = p.matcher(input); 
while (m.find()) { 
    System.out.println(m.group()); 
} 
0

在一行的開頭遇到「WORD」,並且在它後面沒有字符。

text.split("(?mis)^WORD(?!.)");

+0

爲什麼'我'和's'?你不能說這是否是正確的。 – Tomalak 2011-03-21 15:22:16

+0

@Tomalak沒有確切的說,如果WORD總是大寫。我想要點匹配任何字符。 – Stephan 2011-03-21 15:28:11

+0

使用's'修飾符,'(?!。)'表示沒有任何字符出現在這一點之後,甚至沒有換行符。換句話說,它匹配字符串的最後一個字符,就像'\ z'一樣。 – 2011-03-21 21:07:40