RegEx - 仅在单身时选择字符?

时间:2014-03-30 09:43:18

标签: regex replace

我需要将&(0-9a-z)替换为#$1,但前提是&是单身而不是&&.

我尝试类似:([^&]|)(&(0-9a-z)),但只选择全部,或[^&](&([0-9a-z])),但仅在&不是第一个字符时才有效; /

EG: "& 5我的文字&& 6的真棒& a !!! &安培;!" ="#5我的文字&& 6it真棒#a !!! &安培;!"

那么,只有当&字符有{{1}}字符时才会选择此项?

3 个答案:

答案 0 :(得分:2)

您可以使用负面的后置断言来确保匹配&之前没有其他&

(?<!\&)\&[0-9a-z]

答案 1 :(得分:1)

对于此正则表达式,您可以同时使用负向lookbehind和正面looahead:

(?<!&)&(?=[0-9a-z])

仅使用#替换而不使用任何群组捕获。

答案 2 :(得分:0)

我相信你可以使用/[&]{1}/g如果我的记忆正确(虽然这可能过于激进),{1}表示1次出现,g表示匹配可能多次发生。 这很可能需要很多调整以使其正确执行,我一直使用http://www.visibone.com/regular-expressions/这绝对是天赐之物。