我有一个这样的字符串:正则表达式放置双引号用于特定领域
String a = 'ABC(rfg) OR DEF(3dsgf56737(fg)sdg) OR KLM(dfgrg) AND DEF(ghthd)';
我希望把单独DEF场双引号:
String a = 'ABC(rfg) OR DEF("3dsgf56737(fg)sdg") OR KLM(dfgrg) AND DEF("ghthd")';
我有一个这样的字符串:正则表达式放置双引号用于特定领域
String a = 'ABC(rfg) OR DEF(3dsgf56737(fg)sdg) OR KLM(dfgrg) AND DEF(ghthd)';
我希望把单独DEF场双引号:
String a = 'ABC(rfg) OR DEF("3dsgf56737(fg)sdg") OR KLM(dfgrg) AND DEF("ghthd")';
您可以尝试
String b = a.replaceAll("DEF\\((\\S+)\\)", "DEF(\"$1\")");
System.out.println(b);
什么工具,你用做这个? SED?蟒蛇? Java的?
一个正则表达式您可以与使用(例如)sed
是:
's/DEF\((([^(]*|\([^)]*\))+)\)/DEF("\1")/g'
的g
装置全局匹配,并在DEF
位基本上搜索外层一个(在(fg)
内配对括号的你的例子)或其他非括号。
当然,你会定制正则表达式来你的特殊情况 - 例如,如果你只指望那里是字母数字和括号内的DEF里面,然后而不是[^(]
你可以使用[a-z0-9]
等
@NullUserException的评论仍然是相关的 - 虽然你标记了java和python这个问题,但是没有指定你打算使用哪种工具/语言?
例如,你可以使用SED:
echo 'ABC(rgt) ... etc' | sed -r -e 's/DEF\((([^(]*|\([^)]*\))+)\)/DEF("\1")/g'
在任何情况下,无论是使用Java或Python,我已经给了正则表达式将是一样的。
我正在使用java .. – Narayanan
如果您使用的是Java,你想获得的结果甚至不会编译
String a = "ABC(rfg) OR DEF("3dsgf56737(fg)sdg") OR KLM(dfgrg) AND DEF("ghthd")";
你将不得不逃离“的DEF为好,这可以通过稍微改变上面建议的正则表达式来实现
如果括号中有空格将不会工作如果知道DEF(xxx)中的任何内容都没有空格,那么没关系。 –