XPath 표현식에서 Regex를 사용할 수 있습니까?
.NET으로 .//div[@id='foo\d+]
div 태그를 캡처하는 것과 같은 것 입니다 id='foo123'
.
중요한 경우 .NET을 사용하고 있습니다.
다른 답변에서 언급했듯이 XPath 1.0 은 정규식을 지원하지 않습니다 .
그럼에도 불구하고 다음과 같은 옵션이 있습니다 .
- 다음과 같이 XPath 1.0 표현식 (
starts-with()
및translate()
함수 참고 )을 사용하십시오.
.//div [starts-with (@id, 'foo') 과 'foo'= 번역 (@id, '0123456789', '') 과 문자열 길이 (@id)> 3 ]
EXSLT.NET 사용 -XSLT 를 사용하지 않고도 XPath 표현식에서 직접 함수 를 사용할 수 있는 방법이 있습니다 . 정규식-ES를 사용할 수 있도록 허용 EXSLT 확장 기능은 다음과 같습니다
regexp:match()
,regexp:replace()
그리고regexp:test()
사용 XPath는 2.0 / XSLT 2.0 과 붙박이 정규 표현식에 대한 지원 (기능의 일치 () , 대체 () 및 토큰 화 () )
XPath는 2.0 정규 표현식을 지원하는 일부 기능이 있습니다 : matches()
, replace()
, tokenize()
.
XPath 1.0에는 정규식 지원이 없습니다.
.NET의 경우 Saxon.Net의 XPath 엔진을 사용하여 XPath 2.0을 지원할 수 있습니다.
따라서 Saxon.NET에서 XPath 2.0 엔진을 사용하는 경우 예제는 .//div[matches(@id,'foo\d+')]
.
.NET에서는 Extension Objects를 통해 사용자 정의 클래스에 액세스 할 수 있습니다 (따라서 필요에 맞게 적절하게 코딩 할 수있는 경우 regex).
여기 튜토리얼 .
나는 또한 이것을하기를 원했기 때문에 내 자신의 기본 xpath 모듈을 만들었다 .
참고 URL : https://stackoverflow.com/questions/405060/can-i-use-a-regex-in-an-xpath-expression
'program story' 카테고리의 다른 글
네임 스페이스 'std'의 'vector'가 유형 이름을 지정하지 않습니다. (0) | 2020.12.04 |
---|---|
HashSet 만들기 (0) | 2020.12.04 |
요소의 상단 위치를 얻는 방법은 무엇입니까? (0) | 2020.12.04 |
printf를 사용하여 널이 아닌 문자열을 어떻게 인쇄합니까? (0) | 2020.12.04 |
다른 함수 내에서 함수를 어떻게 호출합니까? (0) | 2020.12.04 |