Regex 如何编写正则表达式从堆栈下面提取行
如何编写正则表达式从堆栈下面提取行 我不熟悉正则表达式,希望从堆栈下面提取行。以下是规则Regex 如何编写正则表达式从堆栈下面提取行,regex,Regex,如何编写正则表达式从堆栈下面提取行 我不熟悉正则表达式,希望从堆栈下面提取行。以下是规则 异常后提取以“at”开头的第一行 获取以at com.test开头的第一行(该行可选,也可能不在整个文件中) 获取以at com.test开头的行,该行与步骤2 com不同。测试行包(该行可选,可能存在于整个文件中,也可能不存在) 部分使用前瞻性进行了尝试,但没有结果 (例外)。*[\n\r]*.*at\s+(((?*)(*。(?*)(*。((?:)*).(((?:\d+))(((?=(\n.*)at\s+
(例外)。*[\n\r]*.*at\s+(((?*)(*。(?*)(*。((?:)*).(((?:\d+))(((?=(\n.*)at\s+((?(com.test.*)((?(*)[\(?)((:::)))(((:::))))[124;)
输入
非法辩论例外
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at com.test.package1.user1.client1.client1.Call.invoke(Call.java:90)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at com.test.package1.user1.client1.client1.Call.invoke(SrvCall.java:84)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at java.security.AccessController.doPrivileged(Native Method)
at com.test.package2.user2.client2.client2.Call.invoke(Call.java:90)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
预期结果
1.org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
2.com.test.package1.user.client.client1.Call.invoke(Call.java:90)
3.com.test.package2.user2.client2.client2.Call.invoke(Call.java:90)您可以使用
IllegalArgumentException\n\s*at\s+(.+)(?:(?:\n\s*at(?!\s*com\.test).*)*(?:\n\s*at\s+((com\.test[^(\n]*).*)(?:\n\s*at.*)*\n\s*at\s+(?!\3)(com\.test.*))?)?
见
详细信息
-字符串IllegalArgumentException
-换行符和0+空格\n\s*
-at\s+
和1+空格at
-第1组:第行的第一个(.+)
-在(?:\n\s*at(?!\s*com\.test)。*)*
之后没有at
的以缩进test.com
开头的行
-以缩进的\n\s*at\s+
和1+空格开头的行at
-第2组:((com\.test[^(\n]*).*)
与com.test
被抓进第三组(
-0行或更多行以(?:\n\s*at.*)
at开始
-换行符,1+空格,\n\s*at\s+(?!\3)
,1+空格,后面不能有第3组中的文本at
-第4组:(com\.test.*)
和该行的其余部分com.test