我是正则表达式的新手
我需要从以下示例文本中计算和提取标记:
AA||CCCCCCCC|||FFFFFFFFFFF
Run Code Online (Sandbox Code Playgroud)
请求第 4 个令牌我必须得到一个空的 '' 字符串,请求第 6 个令牌我必须得到 'FFFFFFFFFFFF'
有可能有这样的正则表达式吗?
提前致谢!
PS:对于令牌计数,我使用'\|'向结果添加 +1 是字符串不为空,当然还有另一种更有效的方法可以使用正则表达式来做到这一点......
拆分字符串|会更有效,但这也有效。
我们将把计数器称为大括号之间的数字{X}。该计数器从 0 开始。如果设置为0,我们将获取1st元素,如果设置为5,我们将获取6th元素,等等。
^(?:[^|]*\|){5}\K[^|]*
Run Code Online (Sandbox Code Playgroud)
或者,如果\K您的正则表达式引擎不支持,您可以使用以下内容(导致第一个捕获组):
^(?:[^|]*\|){5}([^|]*)
Run Code Online (Sandbox Code Playgroud)
^ 在行首断言位置(?:[^|]*\|){5} 正确匹配以下 5 次
[^|]*匹配除|任意次数外的任何字符\||字面匹配\K重置比赛的起点。任何先前消耗的字符不再包含在最终匹配中[^|]*匹配除|任意次数外的任何字符