您好我是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
谢谢!
答案 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中直到最后。