我使用亞馬遜網絡服務做在MapReduce的一個項目劈裂字符串時,我有這樣的錯誤:#2使用正則表達式
FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.StackOverflowError at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
我讀了一些其他問題,以瞭解爲什麼會這樣,似乎我的正則表達式有重複的替代路徑。這是正則表達式:
\\s+(?=(?:(?<=[a-zA-Z])\"(?=[A-Za-z])|\"[^\"]*\"|[^\"])*$)
它所做的是,它通過分割空間時,他們是這些符號< >
或這些" "
裏面除了。所以基本上就是在這兩種符號內部的字符串。我嘗試過很多其他的版本,但都沒有成功,所以我離最佳版本很遠。我有點失落,這是我第一次使用這些複雜的正則表達式。有人可以給我的正則表達式更好的選擇嗎?
我真的很感謝每一個反饋!
編輯:
此字符串與內部內<網址>和文本 「」 和空格:
< \ janhaeussler.com/ sioc_type =用戶& sioc_id = 1 /> 「HEY」 <。組織/ 1999/2月22日 - RDF-語法-NS#類型/>
應產生這些3個字符串:?
1. < \ janhaeussler.com/ sioc_type =用戶& sioc_id = 1 />(有或沒有<>)
2.「HEY」
3. <。組織/ 1999/02/22 RDF-語法-NS#類型/>
編輯2:
我認爲符號<>是混亂。我試圖找到一個由一個或多個空格分開的正則表達式,而不考慮「」中的空格,因爲這些URL沒有空格。
需要分別提供一些格式化的輸入和預期的輸出。這樣可以更好地理解和提供替代解決方案 –