是否可以在角色类中使用锚点?这不起作用:
analyze-string('abcd', '[\s^]abcd[\s$]')
在字符类中,^
和$
看起来像文字一样;但是,逃避它们(\^
,\$
)也不起作用。
我正在尝试使用此表达式来创建单词边界(\b
在XSLT / XQuery中不可用),但我不想使用组((^|\s)
) - 因为非捕获组不可用,这意味着在某些情况下我可能最终会有大量不需要的捕获组,这会创建一个新任务,即在不需要的组中找到“真正的”捕获组。
答案 0 :(得分:4)
我认为答案是否定的,您不能将^
和$
作为[]
中的锚点,仅作为文字字符。 (我希望你也可以这样做。)
但是,您可以在字符串的正面和背面连接一个空格,然后只需将\s
作为单词边界,而不要介意锚点。 E.g。
analyze-string(concat(' ', 'abcd xyz abcd', ' '), '\sabcd\s')
在每个+
之后,您可能还需要\s
,但这是一个单独的问题。
答案 1 :(得分:2)
如果你使用analyze-string
作为函数,那么可能你正在使用XSLT或XQuery的3.0实现。
在这种情况下,为什么说“非捕获组不可用”? XPath Functions and Operators 3.0 spec明确表示“非捕获组也被识别。这些由语法(?:xxxx)表示。”
答案 2 :(得分:0)
在第一个方括号后使用插入符将否定字符类。它本质上为您提供了与您想要做的相反的事情,这意味着字符类将匹配任何不在字符类中的字符。否定字符类也匹配(不可见)换行符。
你可以尝试做一个负面的预测。
(?!\s)