我构建匹配的正则表达式 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)
但首先必须找到正确的元素...
答案 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
在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
答案 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'