在這裏習慣了正則表達式。java正則表達式用於分隔空間或捕獲內容「」
我在
word1 word2 word3 word4 word5 "word6" "word7"
word1 word2 word3 word4 word5 "word6" "word7"
word1 word2 word3 word4 word5 "word6" "word7"
...
結構的文件,我想捕捉到:
arr[0] = word1
arr[1] = word2
arr[2] = word3
arr[3] = word4
arr[4] = word5
arr[5] = word6
arr[6] = word7
我的正則表達式是:(?m)(.*)(.*)(.*)(.*)(.*)(".*") (".*")
現在,我敢肯定有一個更優雅的方式來寫這個,我不必多次重複相同的序列。
我的理解是這樣的應該工作?
(?:(.*)*|(".*")*)
相信(?:(.*)|(".*"))
意味着匹配EITHER .*
或".*"
和*
在(.*)
和(".*")
形成(.*)*
和(".*")*
的端部是指匹配0次或更多次。這應該做同樣的事情,我的工作正則表達式沒有?
想法?
編輯 閱讀的一切,我無非是想通過捕捉基於()或縮短我的正則表達式後\「()\」沒有指定的次數將發生捕獲這是不可能。謝謝!
正確的正則表達式: - 它匹配時最後一次(?m)(.*) (.*) (.*) (.*) (.*) \"(.*)\" \"(.*)\"
你爲什麼不只是使用BU ilt -in String.split()函數?所以,String [] arr = lineInput.split(「」); – khriskooper
你需要**來捕捉每個單詞嗎?或者你只是想匹配他們?因爲如果你想捕獲它們,你需要專門編寫每個捕獲組 – Gawil
什麼是你的單詞?什麼字符被允許? – Toto