此问题在此处已有答案:
regex to match substring after nth occurence of pipe character(3个答案)
去年关闭了。
我最近开始学习ruby中的正则表达式,我想从有效负载中提取特定的数据。我的有效负载看起来像这样:
2021年2月1日16:06:06.703中文中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版中文版|ABCD型|范例文字|数量|样本随机文本|此值是随机的,我想从有效负载中取出此值| 9|剩余有效载荷
由于我的数据存在于管道(||),我写了这个正则表达式:
(?<=\|)[^|]++(?=\|)
但问题是,这个正则表达式取|
之间的所有值 |
.
有人能帮我提取第5管|
和第6管|
之间的值吗?
1条答案
按热度按时间im9ewurl1#
您希望提取第5和第6管道之间的文本。您可以使用以下正则表达式来完成此操作。
第一个
我们可以用 * 自由空格模式 * 来编写正则表达式,使其具有自文档性。自由空格模式会导致Ruby的正则表达式引擎在解析表达式之前删除所有注解和空格(这意味着需要对任何空格进行保护,方法是转义它们,将它们放在字符类中,等等)。
另一种方法是删除
\K
并添加捕获组:当然,您不需要为此使用正则表达式: