我有这个字符串,需要获得word2和word3,但不需要word1
this >word1 is a special ;word2 with ;word3
到目前为止,我有这个正则表达式,但它只是选择所有三个单词
(;[a-z0-9]+)
我想要的只是接收word2和word3,因为word1的分号属于XML实体。
答案 0 :(得分:1)
你试过这个吗?
(?<!&[^ ]+)(;[a-z0-9]+)
它是&#34;硬编码的&#34;,但如果分号前面没有以&amp;开头的字符串,它只会在分号后得到单词。
编辑:如果由于使用可变长度lookbehind这种方法不起作用,请将其替换为
(?<!&[^ ]\w{1,20})(;[a-z0-9]+)
对于所述lookbehind 的解决方法,它确实有效
答案 1 :(得分:0)
我说:
您只需检查组1
是否存在。
或者,根据您使用正则表达式的语言,您也可以拆分任何实体(&[^\s;]+;
),然后在每个块中查找单词。
如果您只想替换单词+分号,可以使用([^ ]+?;)|;\w+
并替换为第一组。