捕获连字符正则表达式之间的单词

Jam*_*ren 5 regex hyphen

目前我有这个字符串

"RED-CURRENT_FORD-something.something"
Run Code Online (Sandbox Code Playgroud)

我需要捕捉大肆宣传之间的这个词.在这种情况下这个词CURRENT_FORD

我写了以下内容

\CURRENT_.*\B-\
Run Code Online (Sandbox Code Playgroud)

哪个返回CURRENT_FORD-两个级别的错误.

  1. 它意味着连字符之间的所有内容都以 CURRENT
  2. 它包括最后的连字符.

更有效的方法是捕获连字符之间的单词而不明确说明第一个单词?

Jas*_*ary 6

您可以使用分隔符来帮助绑定模式,然后使用括号捕获所需的内容.

/-([^-]+)-/
Run Code Online (Sandbox Code Playgroud)

然后,您可以修剪连字符.


Ani*_*dha 5

您可以使用这些正则表达式

(?<=-).*?(?=-)//if lookaround is supported
Run Code Online (Sandbox Code Playgroud)

或者

-(.*?)-//captured in group1
Run Code Online (Sandbox Code Playgroud)

.*?匹配任何字符 ie .0 到多次 ie *lazily ie?

(?<=-)是一个零宽度前瞻断言,它将匹配-所需匹配之前的字符,即.*?(?=-)是一个零宽度前瞻断言,匹配匹配后的-字符.*?