我很难用正则表达式解析ssh-config格式的文件
我希望获取文件中的每个配置组,例如,如果要解析的字符串是这样的:
Host myserver
HostName somedns1
User abcuser
IdentityFile ~/.ssh/id_rsa
Host myserver2
HostName someotherdns2
User yourmum
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_yourmum_rsa
Other sdofmwerf
something some
haha ha
Host myserver3
HostName someotherdns23
PreferredAuthentications publickey
User root
IdentityFile ~/.ssh/deploy.key
Host myserver4
HostName someotherdns532
PrefferedAuthentications publickey
User root
IdentityFile ~/.ssh/deploy.key
我希望每个小组都以Word开头,前面没有空格,一直到下一组之前。这是一个这样的群体的一个例子:
Other sdofmwerf
something some
haha ha
我尝试了各种前瞻/后方技术和捕获组,但我对此相当陌生并浪费了几个小时试图实现它。如果这是一个简单的案例,我很抱歉。
编辑:我正在使用 java Groovy 2.3.6 。
感谢您的时间!
答案 0 :(得分:2)
看看给出的答案,我决定与我分享。
/(?<=^)(\S.*?)(?=^\S|\Z)/sm
较短且缺少\n
的问题。
部分是:
答案 1 :(得分:1)
您可以使用此正则表达式分别捕获每个块:
^(\w[\s\S]*?\w)$(?=(?:\s^\w|\s*\z))
m
(MULTILINE)您需要在Matcher#find()
while循环中使用此正则表达式来获取每个块。
答案 2 :(得分:1)