以下是我的正则表达式测试字符串,
DDD001_1_2016_6TP2_1
我需要在一个捕获组中捕获 DDD001_1_2016_6TP2_1,并省略底线。我已经尝试了下面的正则表达式,即使使用非捕获组,我仍然无法捕获我想要的内容。
^(.*?)_.*?_\d{2}(\d{2}(?:_).*)_.*$
从我的研究来看,似乎不可能通过正则表达式省略特定捕获组中的字符,必须通过步骤2完成,例如代码:
任何帮助将不胜感激。
以下是我的正则表达式测试字符串,
DDD001_1_2016_6TP2_1
我需要在一个捕获组中捕获 DDD001_1_2016_6TP2_1,并省略底线。我已经尝试了下面的正则表达式,即使使用非捕获组,我仍然无法捕获我想要的内容。
^(.*?)_.*?_\d{2}(\d{2}(?:_).*)_.*$
从我的研究来看,似乎不可能通过正则表达式省略特定捕获组中的字符,必须通过步骤2完成,例如代码:
任何帮助将不胜感激。
@ZephyrPellerin所说的是正确的。
虽然无法过滤下划线,但仍然可以在不同的匹配组中捕获所需内容,然后以所使用的语言的方式访问这些组。
这里有一个演示。
我使用的正则表达式是:(?<=_\d{2})(.+)(?=_(.+)_)
。
这里第一个括号中捕获了下划线之前的部分,第二个括号中捕获了下划线之后的部分。如果需要,这些部分可以连接起来形成一个字符串。
希望这能帮到你。