2013-08-30 124 views
2

在Python之後找到乏味的Java。試圖解析一些base64連接的數據。簡單的Java正則表達式

如何在一個或多個等號'='上分割一個簡單字符串?

這個簡單的正則表達式有什麼問題? (它是Jython引擎蓋下的Java代碼庫)

>>> s = "hello=world" 
>>> s.split("=+") 
['hello=world'] 
>>> s.split("=*") 
['hello=world'] 
>>> s.split("=") 
['hello', 'world'] 
+0

這是不可能的,你想要的方式。用正則表達式,你只有**一個**模式。那個模式必須匹配。無論您使用*,+還是以往任何方式。 – Gerret

+0

什麼????????????????????????提供一個開始字符串以及你想要分析的東西,這樣我們可以提供幫助。 – progrenhard

+1

不知道爲什麼你會得到這些結果,但是split(「= +」)'在純Java中工作正常。 – Pshemo

回答

4

有趣的問題!

您的代碼是用於分割的有效Java語法。

您正在使用的Jython和Jython的字符串不是一個正則表達式string.split()分裂。

您需要使用Jython re.split來拆分字符串。

+0

甜,我會堅持純Java我猜。 Jython對於複雜的Java測試非常好,儘管:( – drew

0

你在說這個嗎?

^([a-zA-Z0-9]*)=*([a-zA-Z0-9]*)$ 

Regular expression visualization

Edit live on Debuggex

+0

不是你讀過這個問題嗎? '我如何在一個或多個equals上分割一個簡單的字符串'='?'它將Base64編碼連接起來,因此提供1 .. *'='字符。 – drew

+0

@drew我編輯了我的答案,你有正則表達式作爲你的標籤soooo大聲笑 – progrenhard

0

與Jython的只是一個問題。 FYI

輸入

 decryptKeySplits("Testing=hello"); 
     decryptKeySplits("Testing====hello"); 
     decryptKeySplits("Testing=hello=="); 
     decryptKeySplits("Testing=hello=this=it"); 

結果

2 
2 
2 
4