正则表达式:下划线之间的匹配

Regex: matching between underscores

比如我有一个字符串111352_01_2_SAMPLE_TEXT_SAMPLE。我需要匹配第一个、第二个、第三个数字和剩余的文本。

目前我有这个:

是否有更“可读”的构建表达式的方式,因为前三个匹配的逻辑非常相似。 什么是匹配所有表达式的最佳写法

因为你标记了 regex-group 我认为检索这三个子字符串的更直接的方法可能是:

^(.*?)_(.*?)_.*?_(.*)$

demo


也许您正在寻找适用于您想要的字符串中的任何元素的单个正则表达式。在这种情况下,您可以使用:

^(?:.*?_){0}([^\n_]+)

这是一种零索引类型的检索元素,由下划线分隔。但是,我看不到常规 split() 函数的好处。将零更改为 1、2 或 3 等

只需使用

^(\d+)_(\d+)_(\d+)_(.+)

a demo on regex101.com