【发布时间】:2016-04-30 22:31:32
【问题描述】:
我想删除文件中所有不必要的空格,包括换行符,但前提是该换行符不是预处理器行的结尾。尽管文件的语言是 SQF,但预处理器命令与 C 中的相同,但这在这种情况下并不重要。我在 Java 中做这些事情,但出于可读性的原因,我将我的正则表达式放在此处,而不是作为 Java 字符串。
这是一个文件可能看起来的示例:
#include "someFile.ext"
#define IDD idd_interact
#define ELEMENTS_COUNT 2
#define FRAME_X ((1 - FRAME_W) / 2)
#define FRAME_Y ((1 - FRAME_H) / 2)
_aNumber = 0;
if (_someVar == someGlobalVar) then {
};
我用这个试过了:\\s+(?!#) 但结果是这样的:
#include "someFile.ext"
#define IDD idd_interact
#define ELEMENTS_COUNT 2
#define FRAME_X ((1 - FRAME_W) / 2)
#define FRAME_Y ((1 - FRAME_H) / 2) _aNumber = 0; if (_someVar == someGlobalVar) then { };
在最后一个预处理器行之后,换行符也被删除。但我希望保持这种状态,我希望得到这样的结果:
#include "someFile.ext"
#define IDD idd_interact
#define ELEMENTS_COUNT 2
#define FRAME_X ((1 - FRAME_W) / 2)
#define FRAME_Y ((1 - FRAME_H) / 2)
_aNumber = 0; if (_someVar == someGlobalVar) then { };
我尝试了否定的lookbehind,但我只能想出无效的正则表达式(限定符和lookarounds似乎彼此不喜欢):
(?<!(#[^\s]+\s+[^\s]+[^\n]*))[\s]
现在,我对 RegEx 还是很陌生,因此我在这里的知识已经接近尾声。有解决办法吗?不胜感激!
【问题讨论】:
标签: java regex minify line-breaks removing-whitespace