提取相同字符的2个字符之间的字符串

Saa*_*aad 3 java string

我理解如何在[和],或()等两种不同类型的字符串之间提取字符串...

但我不知道的是如何在1个字符之间获得多个/所有字符串.例如:

the *big* brown fox *jumps over* the *lazy* **dog**
Run Code Online (Sandbox Code Playgroud)

它应返回"*":

big
jumps over
lazy
Run Code Online (Sandbox Code Playgroud)

它也应该返回"**":

dog
Run Code Online (Sandbox Code Playgroud)

所有库,正则表达式模式等都不支持这样的功能.

dry*_*hip 5

这个正则表达式:

[\*]+([a-z ]*)[\*]+
Run Code Online (Sandbox Code Playgroud)

将匹配您要找的东西.看到这个.

  • [\*]+在最后匹配1或更多*s.
  • ([a-z ]*) 匹配az和空格之间的字符,并返回该字符.

现在,因为安迪·特纳指出,这也符合dog*dog*********,你可以这样做:

[\*]{1,2}([a-z ]*)[\*]{1,2}
Run Code Online (Sandbox Code Playgroud)

这将匹配*1和2之间s(参照),您可以更改任何范围,但请注意,{1,3}将匹配1,2或3次,不仅1和3倍.

  • 这不太合适 - 它与开头和结尾不匹配.例如,它匹配`*dog**********`(对于`**dog**`它将匹配`**`和`**`). (2认同)