我们有一个具有特定外壳的首字母缩略词。业务现在希望我们找到套管错误的所有事件并修复它。
正确套管示例:HtMl
然后搜索操作需要返回所有出现的HTML,html,Html,HtML等。然后我可以手动检查每个案例,看看它是否真的是我们的首字母缩略词。
我在想Regular Expressions
,但我不确定如何编写一个排除正确案例的人。类似于:\b((H|h)(T|t)(M|m)(L|l))&(~HTML)\b
。只有&
AND
不存在(或者是吗?)。
答案 0 :(得分:1)
您可以将文本转换为小写,然后在小写文本中查找单词的出现次数(也是小写)。现在,无论您在小写版本中找到它,都要在原始文本中替换它。
但是现在我认为这一点,使用正则表达式很多更简单。这里添加的内容不多,但是如果你有很多这样的替换,这里有一个Python脚本应该为你生成(并应用)这些正则表达式。
import re
def replaceAllVariants(acronym, text):
regex = "".join("[%s%s]" % (c.lower(), c.upper()) for c in acronym)
return re.sub(regex, acronym, text)
# usage
text = replaceAllVariants("HTML", "Bla bla html HTML HtMl hTMl foo bar.")
答案 1 :(得分:1)
使用bash脚本解决:
echo "Hello, I'm not HtmL, HTML or html, but not HtMl." | grep -o "[H|h][T|t][M|m][L|l]" | grep -v "HtMl"
“例外”在“grep -v”部分。