응용 프로그램을 개발 중입니다. 사용자가 서버에 일부 설정 값을 입력합니다. inbuilt API를 통해 서버에 값을 요청할 때. 나는 전체 문자열로 같은 값을 얻고있다 :
여기
다음 시나리오에서 정규식 일치 문제가 발생했습니다.
name={abc};display={xyz};addressname={123}
예 -에 대한 속성 내가 함께 분할하는 데 사용되는 이름, 표시 및 주소가 각각의 값입니다 abc 방송, XYZ 및 123
가있다 ; 첫 번째 delimeter로 =와 두 번째 dleimeter로.
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 속성 이름과 값을 유지하기 위해 사용되는 해시 맵입니다.
경우 1 :
case 1: name={abc};display={ xyz=deno; demo2=pol };addressname={123}
case 2: name=;display={ xyz=deno; demo2=pol };addressname={123}
내가 해시 맵이 가득 싶은 :
문제는 문자열이있을 수있다
name =""
display = "xyz= demo; demo2 =pol"
addressname = "123"
: 경우 2
name ="abc"
display = "xyz= demo; demo2 =pol"
addressname = "123"
이러한 문자열을 분할하는 정규 표현식을 찾고 있습니다.
중괄호 세트에는 중첩 된 중괄호가 포함될 수 있습니까? 'name = {abc = {x}; xyz = {12}}'에서와 같이? 그렇다면 문법은 재귀 적이며 정규식 파싱에 적합한 후보는 아닙니다. 상태 기계 또는 재귀 파서를 작성해야합니다. –