Java의 구분 기호 사이에서 여러 줄의 텍스트를 어떻게 대응시킬 수 있습니까? 가장 좋은 예로 설명Java에서 구분 기호 사이의 여러 텍스트 줄 일치
질문 : 위에서
...
unimportant text
EndOfEntry
Key=Value
unimportant text
maybe a few lines of unimportant text
AnotherKey=AnotherValue
EndOfEntry
more unimportant text
...
, 나는 키 = 값에 일치시킬 * AnotherKey = anotherValue라는 함께 하나 개의 항목에 출연 한.. 패턴이 나타나는지 간단히 알기 만하면됩니다. 아무 것도 대체 할 필요가 없습니다.
그러나 동일한 원하는 경기와 같은 여러 항목이 주어진 경우 : 우리가 = 정확히 키를 참조하지 않기 때문에
...
unimportant text
EndOfEntry
Key=Value
unimportant text
maybe a few lines of unimportant text
AnotherKey=NotMyValue
EndOfEntry
RandomKey=Value
unimportant text
maybe a few lines of unimportant text
AnotherKey=AnotherValue
EndOfEntry
more unimportant text
...
을 나는 성공적으로 일치하기 위 싶지 않을 것이다 가치와 AnotherKey = 하나의 "항목"내의 AnotherValue. 대신 첫 번째 항목에는 Key = Value가 표시되고 두 번째 항목에는 AnotherKey = AnotherValue가 표시됩니다. 내가 좋아하는 정규식과 노력했습니다
(물론 \ S \ S 패턴에 대한 DOTALL 옵션으로 대체 될 수 있습니다) :
Key=Value[\S\s]*?AnotherKey=AnotherValue
하지만 모두 일치 물론
. 나는 또한 시도했다 :Key=Value[^EndOfEntry]*?AnotherKey=AnotherValue
그러나 점이없고 우리는 전혀 일치하지 않으므로 작동하지 않는다.
찾고있는 것과 일치하는 하나의 정규식이 있습니까? 줄 바꿈을 먼저 제거하거나 다른 두 단계 처리 (단순히 교육을 위해 피하려고합니다)를 단순화합니까?
나는 당신의 필요를 분명히 아니에요 . 더 나은 입력 예제와 원하는 출력을 넣을 수 있습니까? –
'Key = Value [\ S \ s] *? AnotherKey = AnotherValue [\ S \ s] *? EndOfEntry' 당신이 찾고있는 것을 해보시겠습니까? 각 항목은 Key = Value로 시작해야합니까? – adamdc78
신경 쓰지 마라. 네가보기에 너무 많이 부합 할 것이므로 부정적 시각이 필요하다. 정규 표현식은 올바른 도구가 아닐 수도 있습니다. – adamdc78