查找不同外壳中出现的所有文本

时间:2012-09-05 14:53:46

标签: full-text-search replace case-sensitive

我们有一个具有特定外壳的首字母缩略词。业务现在希望我们找到套管错误的所有事件并修复它。

正确套管示例:HtMl
然后搜索操作需要返回所有出现的HTML,html,Html,HtML等。然后我可以手动检查每个案例,看看它是否真的是我们的首字母缩略词。

我在想Regular Expressions,但我不确定如何编写一个排除正确案例的人。类似于:\b((H|h)(T|t)(M|m)(L|l))&(~HTML)\b。只有& AND不存在(或者是吗?)。

2 个答案:

答案 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”部分。