응용 프로그램에서 상당히 큰 XML 출력이 있습니다. 내 프로그램으로 처리 한 다음 원래 프로그램으로 다시 피드해야합니다. 이 XML에는 대체해야 할 부분이 있습니다. 흥미로운 부분은 다음과 같습니다.정규 표현식을 여러 줄로 올바르게 사용할 수 없습니다.
<sys:customtag sys:sid="1" sys:type="Processtart" />
<sys:tag>value</sys:tag>
here are some other tags
<sys:tag>value</sys.tag>
<sys:customtag sys:sid="1" sys:type="Procesend" />
이 문서에는 이와 같은 여러 부분이 있습니다.
이 태그 안에있는 모든 XML 조각을 수정해야 수정할 수 있습니다. 나는 그 조각을 얻을 수있는 정규 표현식을 썼습니다하지만 그것은 작동하지 않습니다
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"output.xml");
Regex regExp = new Regex(@"<sys:customtag(.*?)Processtart(.*?)/>(.*?)<sys:customtag (.*?)Procesend(.*?)/>", RegexOptions.Multiline & RegexOptions.IgnorePatternWhitespace & RegexOptions.CultureInvariant);
MatchCollection matches = regExp.Matches(xmlDoc.InnerXml);
내가 한 줄에 모든 물건을두고 여러 줄 옵션을 사용하지 않고이 정규 표현식을 호출하는 경우, 그것은 모든 발행 수를 찾을 수 없습니다. 파일을 그대로두고 여러 줄 옵션을 설정하면 작동하지 않습니다. 무엇이 문제인가, 무엇을 바꿔야 하는가? 아니면 regexp없이 이러한 태그 사이에 XML 부분을 가져 오는 더 쉬운 방법이 있습니까?
: (멀리 여러 RegexOptions 플래그를 사용하는 등)
이 코드가 정확한지 :
이 코드는 잘못 생성자에 두 번째 매개 변수로 제로를 전달합니다 고맙습니다. 멀티 라인 = 멀티 라인 모드도 의미합니다. – Biri