正则表达式:查找没有字符的字符串

时间:2018-11-20 22:09:39

标签: javascript regex regex-negation

我构建匹配的正则表达式 2个字母或2个字母,后跟'/',然后是2个字母:

rt bl/ws se gn/wd wk bl/rt

/^(((\s+)?[a-zA-Z]{2}(\/[a-zA-Z]{2})?)(\s+|$))+$/i

,并且没有问题。 我遇到的下一个问题是匹配所有不包含'/'字符的“单词”。 并将所有匹配项替换为以“ /”分隔的重复值。对于上面的示例,例外的输出应为:

rt/rt bl/ws se/se gn/wd wk/wk bl/rt

我尝试了一段时间,但没有成功。你能帮我吗?

更新1:

我从与不包含'at'的单词匹配的正则表达式开始

(\b((?!(at))\w)+\b)

等,我想用python之类的元素替换匹配的元素

re.sub(r'(\b((?!(at))\w)+\b)', r'\1/\1', text)

但首先必须找到正确的元素...

2 个答案:

答案 0 :(得分:0)

如果您使用的支持正则表达式的正则表达式的形式,则此正则表达式应找到要替换的字符串:

(?<!\/)([A-Za-z]{2}(?!\/))

(?<!\/)-确保比赛后没有/
   ([A-Za-z]{2}寻找两个字母字符
   (?!\/))确保没有结尾的/

在Python中,您将像这样使用它:

print(re.sub(r'(?<!\/)([A-Za-z]{2}(?!\/))',r'\1/\1','rt bl/ws se gn/wd wk bl/rt'))

输出:

rt/rt bl/ws se/se gn/wd wk/wk bl/rt

Demo on rextester

在PHP中,您将像这样使用它:

$str = 'rt bl/ws se gn/wd wk bl/rt';
echo preg_replace('/(?<!\/)([A-Za-z]{2}(?!\/))/', '$1/$1', $str);

输出:

rt/rt bl/ws se/se gn/wd wk/wk bl/rt

Demo on 3v4l.org

答案 1 :(得分:0)

在python中,您可以执行以下操作:

re.sub(r'(?:(?<=^)|(?<= ))(\w+)(?= )',r'\1/\1','rt bl/ws se gn/wd wk bl/rt')

'rt/rt bl/ws se/se gn/wd wk/wk bl/rt'