Ho questo tipo di linea:
#RT_POOL_CELL1_1 : RT_CELL_T := (NEXT => 0,
#RT_IS_OK : BOOLEAN := TRUE;
#RT_RESULT_UPDATE_TM_INFO.TC_INFO : PUS.TYPES.RESULT_UPDATE_TM_INFO_T := PUS.TYPES.UPDATE_OK;
E ho bisogno di prendere RT_POOL_CELL1_1, RT_IS_OK e RT_RESULT_UPDATE_TM_INFO (senza il punto .TC_INFO) in java con regex.
Ho provato a farlo con questa regex: s * [#] [[: ascii:]] s * [: |.]
Ma non funziona, la cosa da sapere è che la parola che devo prendere è sempre tra # e:, possono contenere lo spazio tra la parola e il segno e, se c'è un., Giustifico prendere la parola prima del punto.
Grazie per l'aiuto.
risposte:
2 per risposta № 1È possibile utilizzare questo regex basato su lookaround:
(?<=#)[^:.]+?(?= *[:.])
Rottura di regex:
(?<=#) # makes sure there is preceding #
[^:.]+? # match anything but : or . (non-greedy)
(?= *[:.]) # makes sure this is followed by 0 or more spaces and : or .
1 per risposta № 2
Per abbinare la parola:
(?<=#)[^: .]+(?=.*:)
Vedere dimostrazione dal vivo.