我试图使用正则表达式从xpath字符串中找到元素定义。 但是,某些元素定义包括斜杠分隔符本身。
xpath示例:
/初级[@classCode =' ABC'] /受试者[@typeCode =' 123 /一个'] [组织者/代码[@codeSystem =' 12.35.1.1 / b']] /组份[@typeCode =' RET'] /文本()
我期待结果:
尝试简单的事情,比如
(小于?= /)(?*)(?= /)
或类似的变化是不够的。
是否存在正则表达式,无需进一步处理字符串即可将其分开?
答案 0 :(得分:0)
虽然有更好的方法来提取xpath而不是使用正则表达式,具体取决于语言,但是如果你仍然必须使用正则表达式,那么你可以试试这个:
(?<=\/|^)(.*?(?:\[.*?\])*)(?=\/|$)
(?<=
包括/
或起始锚^
(.*?(?:\[.*?\])*)
用于提取路径中的每个段
(?:\[.*?\])
是一个非捕获组,用于匹配[
和]
*
,因为xpath段可以包含多个参数,例如示例中的subject[][]
。(?=\/|$)
包括/
或结束锚$
// Output:
primary[@classCode='ABC']
subject[@typeCode='123/a'][organizer/code[@codeSystem='12.35.1.1/b']]
component[@typeCode='RET']
text()
答案 1 :(得分:0)
我不知道用例是什么,但我希望这会帮助你...
正则表达式: \/.*?[\]\)](?=\/|$)
1。
对于\/.*?[\]\)]
这将匹配/
,直到第一次出现]
或)
(?=\/|$)
或/
(字符串结尾)2。
$
正向前看