我们有一个具有特定大小写的首字母缩写词。企业现在希望我们找到所有出现的套管错误并修复它。
正确大小写示例:HtMl
搜索操作将需要返回所有出现的 HTML、html、Html、HtML 等。然后我可以手动检查每个案例,看看它是否真的是我们的首字母缩略词。
我在想Regular Expressions
,但我不确定如何写一个排除正确案例的方法。类似的东西:\b((H|h)(T|t)(M|m)(L|l))&(~HTML)\b
。只有&
asAND
不存在(或存在?)。
我们有一个具有特定大小写的首字母缩写词。企业现在希望我们找到所有出现的套管错误并修复它。
正确大小写示例:HtMl
搜索操作将需要返回所有出现的 HTML、html、Html、HtML 等。然后我可以手动检查每个案例,看看它是否真的是我们的首字母缩略词。
我在想Regular Expressions
,但我不确定如何写一个排除正确案例的方法。类似的东西:\b((H|h)(T|t)(M|m)(L|l))&(~HTML)\b
。只有&
asAND
不存在(或存在?)。
您可以将文本转换为小写,然后在小写文本中查找出现的单词(也小写)。现在,无论您在小写版本中找到它的任何位置,都将其替换为原始文本。
但是现在我想了想,使用正则表达式要简单得多。这里没有太多要添加的内容,但是如果您有很多这样的替换要做,这里有一个 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.")
使用 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”部分。