我使用 XSLT 2.0 在 XML 转换期间创建了一个正则表达式来拆分特定字符串:
(@VAL)((.+?)(?=@VAL|$))
此正则表达式应用于一些具有以下相同形式的字符串:
@VAL@TEST1@1111@'Ceci est un texte'@VAL@TEST2@2222@'This is a text'@VAL@TEST3@3333@'Encore du texte'
它提取从 @VAL 开始直到下一个 @VAL 的所有内容(有关 ?= 构造的解释,请参见那里)。所以对于这个例子,正则表达式的结果提供了这三个字符串:
- @VAL@TEST1@1111@'Ceci est un texte'
- @VAL@TEST2@2222@'这是一个文本'
- @VAL@TEST3@3333@'Encore du texte'
不幸的是,即使它与这个在线正则表达式测试器配合得很好,我在执行转换时也会遇到这个错误:
XTDE1140:正则表达式错误:net.sf.saxon.trans.DynamicError:正则表达式“(@VAL)(.+?(?=@VAL|$))”中字符 11 处出错:预期 ()) 失败编译样式表。检测到 1 个错误
那么这个正则表达式有什么问题呢?我不明白为什么要在字符 11 处加上右括号。
欢迎任何帮助。
PS:我使用 saxon8 XSLT 处理器