正则表达式公司名称清理简化

时间:2015-11-26 04:13:38

标签: regex

您好我是regex的新手,我正在尝试使用它来清理数据中的公司名称。

我一直在尝试编写正则表达式,但我相信有一种比我的代码更简单的方法,所以我来这里寻求你的专业知识。

我的正则表达式如下。它是在C#中完成的,但我相信它与其他编程语言相似。

Regex.Replace("IBM AUSTRALIA PTY LTD","(\\sPTY(\\.)?\\sLTD(\\.)?)$|\\sPTY(\\.)?$|\\s(LTD|LIMITED)(\\.)?","")

我想用这个表达来代替PTY,PTY。,LTD,LTD。有空的空间限制等。如果我能像我一样编写重复代码,我想我可以做类似的事情来摆脱AUS,AUST,AUSTRALIA。

或者我可以匹配\ sAUS(TRALIA)吗?\ s并用空格替换它。

以下所有名称都应返回IBM。

IBM AUS LTD
IBM AUST LTD
IBM AUSTRALIA
IBM AUSTRALIA LIMITED
IBM AUSTRALIA LTD
IBM AUSTRALIA PTY LTD

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试,CtClass clas = ClassPool.getDefault().get("classFullName"); CtMethod mold = clas.getMethod("MethodName", "MethodParameters"); //Rename the original method name String nname = mname+"$impl"; mold.setName(nname); CtMethod mnew = CtNewMethod.copy(mold, mname, clas, null); String bodyText = "New Method body"; StringBuffer body = new StringBuffer(); body.append(bodyText); //Replace the body of the intercepter method with generated code block and add it to class. mnew.setBody(body.toString()); clas.addMethod(mnew); clas.writeFile(); clas.toClass(); 替换为emty char。我希望这有帮助

答案 1 :(得分:0)

您可以尝试使用多行和全局模式的以下正则表达式:

.+(?= AUS)(.*)

" AUS"的位置之前吃尽可能多的charachters(最小值),并且在捕获组1中直到最后。