我正在尝试编写一个正则表达式(使用grep来执行它),只要在该内容中存在特定的搜索模式,它就会返回所有出现的括号内容。例如,我有以下文字
(McSweeney 2010)(Harpers October 2008)(McSweeney 2011)(一些作者,McSweeney,其他作者,1995)
我希望返回包含" McSweeney"的所有括号内容。在某处,所以
(McSweeney 2010)
(McSweeney 2011)
(某些作者,McSweeney,其他作者,1995年)
这是否可以在单个正则表达式中使用?我已经能够使用
获得所有括号内容MessageFormat header = new MessageFormat("header massege");
MessageFormat footer = new MessageFormat("footer massage");
try {
JTextField fieldForPrint = new JTextField("your total is $ " + jTextField1.getText());
fieldForPrint.print(header, footer);
} catch (java.awt.print.PrinterException e) {
System.err.format("Cannot print %s%n", e.getMessage());
}
但是当我尝试将单词引入模式时它会崩溃。
答案 0 :(得分:2)
尝试使用GNU grep:
grep -oE '\([^)]*McSweeney[^)]*\)' file
输出:
(McSweeney 2010) (McSweeney 2011) (Some Author, McSweeney, Some Other Author, 1995)
或用字符串:
string="McSweeney"
grep -oE '\([^)]*'"$string"'[^)]*\)' file