正则表达式匹配2个字符之间的文本

时间:2015-06-12 08:21:55

标签: java regex

我有这样一句话:

#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;

我需要在java中使用正则表达式获取RT_POOL_CELL1_1,RT_IS_OK和RT_RESULT_UPDATE_TM_INFO(不带点.TC_INFO)。

我试图用这个正则表达式做到这一点: \ S * [#] [[:ASCII:]] \ S * [:|。]

但它不起作用。要知道的是我需要采取的词总是介于#和:之间,它们可以包含word et sign之间的空格。如果有一个。,我会在点之前接受这个词。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以根据外观使用此正则表达式:

(?<=#)[^:.]+?(?= *[:.])

正则表达式分手:

(?<=#)     # makes sure there is preceding #
[^:.]+?    # match anything but : or . (non-greedy)
(?= *[:.]) # makes sure this is followed by 0 or more spaces and : or .

RegEx Demo

答案 1 :(得分:1)

匹配单词:

(?<=#)[^: .]+(?=.*:)

请参阅live demo