2014-02-07 176 views
0

我有一个非常复杂的函数输出,我需要使用它的特定单词。Java字符串分割多个字符分隔符

对于例如,我输出是:

oracle 11257  1 0 14:01 ?  00:00:00 ora_pmon_sas 

我需要得到公正 “sas” 字样,这是旁边的 “ora_pmon_

又如:

oracle 6187  1 0 13:41 ?  00:00:00 ora_pmon_db2 

我需要得到“db2”。那么我应该怎么表达?

Java代码:

insArray=line.split("what will be between these quotes?"); 
+1

为什么如果该模式只发生一次,你分裂了!..它有多个这样的模式。 。请问你的问题非常具体.. – Anirudha

+0

'input.substring(input.lastIndexOf('ora_pmon_')+ 1)'会做诡计...... –

+0

好吧,可能会有另一个词,如“asm_pmon_”而不是“ ora_pmon_”。但其余的事情是相似的。 – AloneInTheDark

回答

2

你可以只是做

String sub = s.substring(s.indexOf("ora_pmon_") + 9); 
1

您可以简单地使用String#substring(int i)String#lastIndexOf(char ch)

合并例如:

String result = input.substring(input.lastIndexOf('_') + 1) 
+0

'ora_pmon_db2_abc'怎么办?根据OP问题,我认为更好的sol可能是'lastIndexOf('ora_pmon _')'... –

+0

你是对的,但是OP没有注意到会有这种情况。 –

2

这个怎么样?

string = string.replaceAll(".*?ora_pmon_", ""); 

如果你想代替ORA多个单词,那么这将是

string = string.replaceAll(".*?(ora|kf|asm)_pmon_", ""); 
+0

这可能是有用的,但“ora”可以是任何像“kf”或“asm”。那么你对这种情况的答案是什么? – AloneInTheDark

+0

用'(ora | kf | asm)替换ora'只需在其中添加你的单词和管道。 –

+0

但我只需要找到它们。如果没有像“ora_pmon_sas”这样的词,它应该通过它。 – AloneInTheDark