我正在開發一個應用程序。用戶將在服務器中輸入一些設置值。當我通過內置的API向服務器請求價值時。我越來越像值作爲一個整體字符串:
的示例 -
以下場景的正則表達式匹配問題
name={abc};display={xyz};addressname={123}
這裏的屬性名,顯示和地址,並有相應的值是ABC,XYZ和123
我用分裂;作爲第一個分度器,並且=作爲第二個計數器。
String[] propertyValues=iPropertiesStrings.split(";");
for(int i=0;i<propertyValues.length;i++)
{
if(isNullEmpty(propertyValues[i]))
continue;
String[] propertyValue=propertyValues[i].split("=");
if(propertyValue.length!=2)
mPropertyValues.put(propertyValue[0], "");
else
mPropertyValues.put(propertyValue[0], propertyValue[1]);
}
}
這裏mPropertyValues是用於保存屬性名稱和值哈希映射。
問題是可能存在字符串:
case 1: name={abc};display={ xyz=deno; demo2=pol };addressname={123}
case 2: name=;display={ xyz=deno; demo2=pol };addressname={123}
我想HashMap來填充:
殼體1:
name ="abc"
display = "xyz= demo; demo2 =pol"
addressname = "123"
對於殼體2:
name =""
display = "xyz= demo; demo2 =pol"
addressname = "123"
我正在尋找一個正則表達式來分割這些字符串;
一組大括號中是否包含嵌套大括號?正如'name = {abc = {x}; xyz = {12}}'?如果是這樣,那麼語法是遞歸的,不是一個正則表達式解析的好候選。你需要編寫一個狀態機或遞歸下降解析器。 –