正则表达式从包含以分号(;)分隔的不同单词的字符串中获取第n个单词

时间:2019-04-02 20:11:51

标签: regex dynatrace

我有一个字符串(操作日志信息),该字符串是不同单词的组合,并且全部由分号(;)操作。我想提取23个字,告诉我该客户有资格进行此操作。

我是regex的新手,能否请您帮助我找出regex。 我将在 Dynatrace 工具中使用此正则表达式,而JAVA正则表达式功能将无法正常工作

字符串示例1: 57423543521;314743352134;Source;Tue Apr 02 12:32:44 BST 2019;ELIGIBILITY;ABC345;MyChannel;DUMBRE;1;RR87835;NM;2019-04-02T07:20:00.000Z;VV;;;M;N;XCB234657;;24234SDF4435345;MrNitinDumbre;N;N;DFD4546;Adult;;MYTICKET;4535435435;;657657655;PP;N;Y;;Y;;N;;;Unconfirmed;;;Not Performed;OK;;Not Known

===>字符串上方的第23个单词是'N'(在'DFD4546; Adult'之前,标记为 BOLD

字符串示例2: 435435435435;345435435657;Source;Tue Apr 02 14:42:20 BST 2019;ELIGIBILITY;PQR490;MyChannel;DUMBRE;2;LK345029;CDGPNQ;2019-04-02T21:15:00.000Z;TT;;;W;Y;;N;34243DFGDFG32434;ProfNitin FDGDFDumbre;N;Y;;Adult;;MYTICKET;345435435;;;;N;Y;;Y;;N;Y;;Unconfirmed;;;Cleared;OK;;Not Known

===>字符串上方的第23个单词是'Y'(在标记为 BOLD 的'; Adult'之前)

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式精确获取第23个单词,并从group1捕获它。

(?:([^;]*);){23}

此处,外部非分组括号使用;匹配除[^;]*以外的任何字符零个或多个,然后匹配;,并且使用{ {1}}量词,其中使用23

在组1中捕获了最后一个匹配项

Demo