正则和变量的正则表达式

时间:2017-11-18 07:08:40

标签: regex

我正在尝试使用正则表达式匹配Java类中的字段。到目前为止,它总体上工作得很好,但只有一个问题。一旦我匹配一个字段,我就有了第二个正则表达式来匹配字段的名称。我使用(\w+)\s*(?:\s*=\s*[^;,]+)?来匹配字段的名称,但如果字段的值包含在括号中,并且空格分隔该字段的值,则它会将字段值作为字段名称进行匹配。例如,下面匹配所有名为value#的名称,但是,一旦达到value5,则匹配2,因为括号内的空格分隔了字段的值。如果可能的话,我需要一种在括号内不匹配空格的方法,同时仍然完成当前与值1-4匹配的内容。即使是能够正确匹配价值5但又会陷入6和7的解决方案也会受到欢迎。

示例代码:

value1;
value2 = 3;
value3 = 4, value4 = 4;
value5 = {
    1, 2
};
value6 = {
    1, 2
}, value7 = {
    1, 2
};

1 个答案:

答案 0 :(得分:0)

试试这个:

([a-zA-Z_]\w*)(?:\s*=\s*(?:\{[^\}]+\}|[\{;,]+))?

此表达式还利用了字段名称不能以数字开头的事实。