한 줄에있는 데이터 문자열이 있습니다.Ruby와 정규 표현식을 사용하여 여러 문자열을 개별적으로 선택
<record xmlns:f="http://abc.com/">
<f:Table><f:Row><f:Cell>#1</f:Cell></f:Row><f:Row><f:Cell>Data 222</f:Cell></f:Row><f:Row> <f:Cell>Version: v3</f:Cell></f:Row><f:Row><f:Cell>Serial Number: 000000000</f:Cell></f:Row> <f:Row><f:Cell>Signature: 123</f:Cell></f:Row><f:Row><f:Cell>Issuer:</f:Cell></f:Row><f:Row> <f:Cell>C=EE,</f:Cell></f:Row><f:Row><f:Cell>ST=ABC,</f:Cell></f:Row><f:Row><f:Cell>L=avavv,</f:Cell></f:Row><f:Row><f:Cell><f:HexDump><f:Line seq=""0x0000"" hex=""09 09 4f 3d 5a 65 72 6f 54 75 72 6e 61 72 6f 75"">..O=ABC</f:Line><f:Line seq=""0x0010"" hex=""6e 64 20 4f c3 9c 2c"">nd OÇ.,</f:Line></f:HexDump></f:Cell></f:Row><f:Row><f:Cell>OU=abc,</f:Cell></f:Row><f:Row><f:Cell>CN=trtrtrtr,</f:Cell></f:Row><f:Row><f:Cell>E=null,</f:Cell></f:Row><f:Row><f:Cell>Create: 03/03/2010 14:58</f:Cell></f:Row><f:Row><f:Cell>Expire: 04/02/2010 14:58</f:Cell></f:Row><f:Row><f:Cell>Subject:</f:Cell></f:Row><f:Row><f:Cell>C=EE,</f:Cell></f:Row><f:Row><f:Cell>ST=SS,</f:Cell></f:Row><f:Row><f:Cell>L=Tartu,</f:Cell></f:Row><f:Row><f:Cell><f:HexDump><f:Line seq=""0x0000"" hex=""09 09 4f 3d 5a 65 72 6f 54 75 72 6e 61 72 6f 75"">..O=ZeroTurnarou</f:Line><f:Line seq=""0x0010"" hex=""6e 64 20 4f c3 9c 2c"">nd OÇ.,</f:Line></f:HexDump></f:Cell></f:Row><f:Row><f:Cell>OU=KKK,</f:Cell></f:Row></f:Table>
내 루비 정규식 포함은 다음과 같습니다
<f:HexDump>[\s\S]*,<\/f:Line><\/f:HexDump>
그래서 나는
<f:HexDump>
및
<f:/HexDump>
태그 둘 사이에 (태그 포함) 모두를 제거하려고하지만 그 사이에 물건을 떠날거야.
제 정규식은 두 번째 <f:/HexDump>
태그 사이에서 모든 것을 선택하는 것이 문제입니다.
<f:HexDump><f:Line seq=""0x0000"" hex=""09 09 4f 3d 5a 65 72 6f 54 75 72 6e 61 72 6f 75"">..O=ABC</f:Line><f:Line seq=""0x0010"" hex=""6e 64 20 4f c3 9c 2c"">nd OÇ.,</f:Line></f:HexDump></f:Cell></f:Row><f:Row><f:Cell>OU=abc,</f:Cell></f:Row><f:Row><f:Cell>CN=trtrtrtr,</f:Cell></f:Row><f:Row><f:Cell>E=null,</f:Cell></f:Row><f:Row><f:Cell>Create: 03/03/2010 14:58</f:Cell></f:Row><f:Row><f:Cell>Expire: 04/02/2010 14:58</f:Cell></f:Row><f:Row><f:Cell>Subject:</f:Cell></f:Row><f:Row><f:Cell>C=EE,</f:Cell></f:Row><f:Row><f:Cell>ST=SS,</f:Cell></f:Row><f:Row><f:Cell>L=Tartu,</f:Cell></f:Row><f:Row><f:Cell><f:HexDump><f:Line seq=""0x0000"" hex=""09 09 4f 3d 5a 65 72 6f 54 75 72 6e 61 72 6f 75"">..O=ZeroTurnarou</f:Line><f:Line seq=""0x0010"" hex=""6e 64 20 4f c3 9c 2c"">nd OÇ.,</f:Line></f:HexDump>
Ruby 정규식을 사용하여이를 수행 할 수 있습니까?
XML입니다. 정규 표현식을 사용하는 텍스트가 아닌 XML 파서를 사용하여 XML을 XML로 구문 분석해야합니다. 특히 중첩 된 항목을 일치시키려는 경우. – Ryan
그래, 노 코기 리를 시도했지만 제거해야 할 요소를 얻는 데 어떤 성공도 없었습니다. 아마 그것의 심하게 형성된 때문입니다. – user1513388
''''을 의미합니까? 다행히 문자열 치환으로 해결할 수 있습니다 :) (그게 아니라면 nokogiri가주는 오류는 무엇입니까?) – Ryan