我知道如何2種不同類型的字符串之間提取字符串,例如[和],或(等之間的串...提取物)進行同一性質的2個字符
但我不知道是如何獲得1個字符之間的多個/所有字符串。 如:
the *big* brown fox *jumps over* the *lazy* **dog**
它應該返回 「*」:
big
jumps over
lazy
,它也應該返回 「**」:
dog
的所有庫,正則表達式模式和這樣的不支持這種功能。
我知道如何2種不同類型的字符串之間提取字符串,例如[和],或(等之間的串...提取物)進行同一性質的2個字符
但我不知道是如何獲得1個字符之間的多個/所有字符串。 如:
the *big* brown fox *jumps over* the *lazy* **dog**
它應該返回 「*」:
big
jumps over
lazy
,它也應該返回 「**」:
dog
的所有庫,正則表達式模式和這樣的不支持這種功能。
此正則表達式:
[\*]+([a-z ]*)[\*]+
將匹配你在找什麼。見this。
[\*]+
最後匹配1個或多個*
s。([a-z ]*)
匹配a-z和空格之間的字符,並返回該字符。現在,因爲安迪·特納指出,這也符合在*dog*********
dog
,你可以這樣做:
[\*]{1,2}([a-z ]*)[\*]{1,2}
這將1和2之間的匹配*
s(參照this)可以改變,要任何範圍,但請注意{1,3}
將匹配1,2或3次,而不僅僅是1次和3次。
這不起作用 - 它不匹配相同的開始和結束。例如,它會匹配'* dog **********'(和'** dog **'它會匹配'**'和'**')。 –
@AndyTurner你是對的。但那不是要求。是嗎? – Hackerdarshi
@AndyTurner編號爲'**狗**'。它會匹配'狗'看到鏈接? – Hackerdarshi
String str="the *big* brown fox *jumps over* the *lazy* **dog**"
str = str.replace("**", "*");
,然後執行你使用
下來選民!請原因? – user6218508
有一個更優雅的方式來解決它(與正則表達式),但這是沒有錯的,不應該被低估。 –
String test = "the *big* brown fox *jumps over* the *lazy* **dog**";
StringTokenizer st = new StringTokenizer(test,"*");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
在循環中的提取方法,使用'indexOf'和'substring' –
創建自己的方法,尊重你的條件,並建立與StringBuilder的你的輸出字符串 – Ricardo
你需要像「(\ * \ w + \ * *)」和「(\ * \ * \ w + \ * * *)」這樣的組匹配正則表達式「請參閱http://stackoverflow.com/questions/5508965/java-regexp -group-capturing – kofemann