正则表达式:匹配FIRST下划线之前的所有内容以及之间的所有内容

EKe*_*Ket 5 regex

我有一个表达式

test_abc_HelloWorld_there could be more here.
Run Code Online (Sandbox Code Playgroud)
  1. 我想要一个第一个下划线之前取第一个字的正则表达式.所以得到"test"

我试过[A-Za-z]{1,}_但是没用.

  1. 然后我想在前两个下划线之间得到"abc"或任何东西.

2单独的正则表达式,未合并

任何帮助非常感谢!

例:

1)正则表达式匹配单词test 2)正则表达式匹配单词abc

所以任何一种情况的任何其他匹配都是错误的.就像在,如果我要替换我匹配的东西,那么我会得到这样的东西:

例1)匹配"test"并将"test"替换为"Goat".

'Goat_abc_HelloWorld_there could be more here'
Run Code Online (Sandbox Code Playgroud)

我不想要替换,我只想要一个单词匹配.

Tho*_*ens 18

在这两种情况下,您都可以使用断言.

^[^_]+(?=_)
Run Code Online (Sandbox Code Playgroud)

将为您提供一切直至该系列的第一个下划线,并且

(?<=_)[^_]+(?=_)
Run Code Online (Sandbox Code Playgroud)

将匹配两个unserscores之间的任何字符串.

  • 如果使用一个像样的正则表达式引擎,它确实有效!;-) Regextester是基于Javascript构建的,它无法处理loockbehind断言.但它仍然适用于Perl,PHP,Python,Java,.net,Ruby ...由于你没有提到你使用的语言,我只是假设一般的正则表达式是可以的. (4认同)