在这里习惯了正则表达式。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