我需要一個正則表達式來解析屬性文件中的鍵值對,將它們寫入數據庫。該應用程序是用java編寫的。因爲我需要存儲關於註釋行和空行的信息,所以properties.load不適用於我包含未轉義空格的鍵值對的正則表達式
關鍵是直到第一次出現未轉義的空格或等號(包括轉義的空格)。 值是一切直到行尾,但也可以是空的。
它必須符合以下情況:
- 鍵=值
- 鍵值
- 鍵=值值
- 鍵
- 鍵值值
- 密鑰\鍵\鍵=值
- 鍵\鍵\鍵值
我試過以下的正則表達式,但它不能正常單獨最後兩種情況:
^(\\\s|[^\s=]+)+[\s|=](.*)?$
在過去的兩個例子我得到Rubular:
1. key\
2. key\ key value
,而不是
我也試過 this,但它對我也不起作用在此先感謝您的幫助!
似乎工作正常。感謝您的幫助和解釋! :) – Sebastian
您也可以使用'(。*?)((((?<!\\\\)\\ s | =)(。*?))?'來一致地使用組#1來獲得密鑰和組#4來獲得價值。除非你真的需要匹配字符串的開始/結尾,否則你可以將它們排除,因爲Matcher.matches()會匹配整個字符串。 –
@ Dan-Cruz非常好的簡化 - 你應該添加它作爲你自己的答案,並得到它的一些功勞。 – cordsen